Paw 设置Header动态请求值

实际开发中, 通常一个API会依赖另一个API的返回值, 比如 Authorization Header, 通常有一个 get access token API
paw 里可以在方便设置 值为另一个API的返回结果

paw 里设置 值为 Response -> Response Parsed Body

可以设置具体json 的key path

请求的时候同时请求依赖request

2019/1/3 posted in  DevOps

gitlab docker 部署记

https://stackoverflow.com/questions/44056807/gitlab-docker-smtp
https://developer.ibm.com/code/2017/07/13/step-step-guide-running-gitlab-ce-docker/
https://docs.gitlab.com/omnibus/docker/
https://hub.docker.com/r/gitlab/gitlab-ce/

#!/bin/bash

sudo docker run --detach \
      --hostname 192.168.88.244 \
      --publish 80:80 --publish 10022:22 \
      --env "GITLAB_SHELL_SSH_PORT=10022" \
      --name gitlab \
      --restart always \
      --volume /srv/gitlab/config:/etc/gitlab \
      --volume /srv/gitlab/logs:/var/log/gitlab \
      --volume /srv/gitlab/data:/var/opt/gitlab \
      gitlab/gitlab-ce:latest
   
2018/10/9 posted in  DevOps

chef-solo knife 使用 tips

  • 初始化项目 knife solo init .
  • 生成cookbook模板chef generate cookbook helloworld
  • 在服务器上执行 knife solo cook lidashuang@10.211.55.6
  • code stype 检查 foodcritic ./site-cookbooks/helloworld/
2018/9/27 posted in  DevOps

ansible command - Executes a command on a remote node

https://docs.ansible.com/ansible/2.5/modules/command_module.html

注解:command模块不是调用的shell的指令, 所以没有bash的环境变量,也不能使用shell的一些操作方式,像 $HOME 这样的变量是不可用的, 还有像<, >, |, ;, &都将不可用, 其他和shell没有区别

示例

- name: return motd to registered var
  command: cat /etc/motd
  register: mymotd

- name: Run the command if the specified file does not exist.
  command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database

# You can also use the 'args' form to provide the options.
- name: This command will change the working directory to somedir/ and will only run when /path/to/database doesn't exist.
  command: /usr/bin/make_database.sh arg1 arg2
  args:
    chdir: somedir/
    creates: /path/to/database

- name: safely use templated variable to run command. Always use the quote filter to avoid injection issues.
  command: cat {{ myfile|quote }}
  register: myoutput

参数

  • chdir 命令执行前切换到某个目录
  • creates 一个文件名或者glob模式,当这些已经存在,命令不执行
  • free_form 本地脚本路径
  • removes 一个文件名或者glob模式,这个文件不存在,则该命令不执行
2018/8/31 posted in  DevOps

ansible loops 笔记

https://docs.ansible.com/ansible/2.4/playbooks_loops.html

Standard Loops 标准循环

使用 with_items

- name: add several users
  user:
    name: "{{ item }}"
    state: present
    groups: "wheel"
  with_items:
     - testuser1
     - testuser2

如果定义了变量可以这样

with_items: "{{ somelist }}"

上面等价于

- name: add user testuser1
  user:
    name: "testuser1"
    state: present
    groups: "wheel"
- name: add user testuser2
  user:
    name: "testuser2"
    state: present
    groups: "wheel"

with_items 元素为hash示例

- name: add several users
  user:
    name: "{{ item.name }}"
    state: present
    groups: "{{ item.groups }}"
  with_items:
    - { name: 'testuser1', groups: 'wheel' }
    - { name: 'testuser2', groups: 'root' }
2018/8/31 posted in  DevOps

Gitlab 维护笔记

备份

gitlab-rake gitlab:backup:create STRATEGY=copy

备份位置

/var/opt/gitlab/backups

升级

apt-get update && sudo apt-get install gitlab-ce
2018/4/20 posted in  DevOps

macOS v2ray-core 多开 & supervisor 配置

最开始使用 https://github.com/Cenmrev/V2RayX 项目在macOS下跑
遇到经常断开,升级会覆盖配置文件

所以直接使用v2ray-core在命令行跑, surge拿来分流

使用 supervisor 管理服务

supervisor 安装,要求使用python2

sudo pip2 install supervisor

生成配置文件

echo_supervisord_conf > /usr/local/etc/supervisord.conf

自己的配置文件放在 /usr/local/etc/supervisor.d/

设置include

[include]
files = /usr/local/etc/supervisor.d/*.conf

supervisor 的 命令有两个

  • supervisord supervisor自身服务的启动
  • supervisorctl 管理自己配置的服务

为了方便在surge中切换服务器,每个服务器开一个v2ray-core客户端

所以 supervisord 配置文件看起来类似这样,每个客户端一个配置

配置文件示例

[program:svip21]
command=v2ray -config /usr/local/etc/supervisor.d/svip21.json
autostart=true
autorestart=true

每个客户端开放的sock5 端口不同,修改 port 确保不同的客户端 端口不同

  "inbound": {
    "port": 1083,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "settings": {
      "auth": "noauth",
      "udp": false,
      "ip": "127.0.0.1"
    }
  },

配置好之后运行 supervisord 启动supervisor,

测试的话可以使用-n

-n/--nodaemon -- run in the foreground (same as 'nodaemon=true' in config file)

surge 配置

surge 中配置socks5

🇭🇰svip21.v2 = socks5, 127.0.0.1, 1081, ,
🇭🇰svip22.v2 = socks5, 127.0.0.1, 1082, , 
🇭🇰svip23.v2 = socks5, 127.0.0.1, 1083, , 

在surge中可以方便切换不同的服务器

2018/3/15 posted in  DevOps

21.2.1. Rsyslog Filters note

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/s1-basic_configuration_of_rsyslog

配置文件 /etc/rsyslog.conf

rsyslog 提供了三种filter形式

  • Facility/Priority-based
  • Property-based
  • Expression-based filters

Facility/Priority-based filters

基于 facility 和 priority 过滤日志

语法

FACILITY.PRIORITY

FACILITY 是产生日志的子系统
一般有下面的这些

kern (0), user (1), mail (2), daemon (3), auth (4), syslog (5), lpr (6), news (7), uucp (8), cron (9), authpriv (10), ftp (11), and local0 through local7 (16 - 23)

PRIORITY 是表示日志等级

debug (7), info (6), notice (5), warning (4), err (3), crit (2), alert (1), and emerg (0)

示例

匹配所有的kernel 日志

kern.*

所有邮件日志中 priority 为crit 的日志

mail.crit

所有的cron日志,但是不包括 info debug

cron.!info,!debug

Property-based filters

语法,以冒号开关

 :PROPERTY, [!]COMPARE_OPERATION, "STRING"

示例

msg 中有error 字段

:msg, contains, "error"

hostnamt 为 host1

:hostname, isequal, "host1"

msg 中排除 有fatal 和 error 中间任何字条串的 字符串

:msg, !regex, "fatal .* error"

所有的 COMPARE_OPERATION

  • contains 包含字符串,大小写不敏感使用 contains_i
  • isequal 是否相等
  • startswith 以什么字符串开关,大小写敏感使用 startswith_i
  • regex 正则表达式(POSIX BRE (Basic Regular Expression))匹配
  • ereregex POSIX ERE (Extended Regular Expression)
  • isempty 是否是空的

Expression-based filters

使用rsyslog 自己的脚本语言 RainerScript

基本的语法

if EXPRESSION then ACTION else ACTION
  • EXPRESSION 执行的表达式,例如 $msg startswith 'DEVNAME'$syslogfacility-text == 'local0'
    可以使用and 或者 or 操作符
  • ACTION 要执行的动作

示例

if $programname == 'prog1' then {
   action(type="omfile" file="/var/log/prog1.log")
   if $msg contains 'test' then
     action(type="omfile" file="/var/log/prog1test.log")
   else
     action(type="omfile" file="/var/log/prog1notest.log")
}
2017/10/24 posted in  DevOps

CentOS Sentry Server 安装笔记

使用docker安装

Docker 1.10.0+

$ sudo  yum install docker
$ sudo yum install docker-compose

或者手动安装
https://docs.docker.com/compose/install/

修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

测试

$  sudo docker run hello-world

构建 Container

Github:

https://github.com/getsentry/onpremise

配置邮件,开放端口

2017/10/17 posted in  DevOps

saltstack salt-ssh 使用问题记录

问题 ssh_log_file

$ salt-ssh -v "*" test.ping
Failed to create path "/var/log/salt/ssh" - [Errno 13] Permission denied: '/var/log/salt'

配置日志路径 ssh_log_file 选项

Saltfile

salt-ssh:
  log_level: info
  ssh_log_file: /tmp/salt-ssh-log.log 
  config_dir: ./config

ssh key

salt-ssh could not be run because it could not generate keys.

You can probably resolve this by executing this script with increased permissions via sudo or by running as root.
You could also use the '-c' option to supply a configuration directory that you have permissions to read and write to.

配置 ssh_priv: ./id_rsa 第一次会需要密码,生成key,后边使用ssh key

salt-ssh:
  log_level: info
  ssh_log_file: /tmp/salt-ssh-log.log
  config_dir: ./config
  ssh_priv: ./id_rsa
2017/10/13 posted in  DevOps