Ansible 速查表

Ansible 速查表

January 12, 2020
速查表
★ 在 GitHub 赞我

Ansible 是一个自动化工具.


安装 Ansible:

python -m virtualenv ansible  # 创建虚拟环境
source ansible/bin/activate   # 激活虚拟环境
pip install ansible

Inventory

默认路径: /etc/ansible/hosts.

使用 -i <path> 指定 的自定义的 Inventory (清单, 用于管理服务器 host). Inventory 示例:

Prod ansible_ssh_user=[username] ansible_ssh_host=[ip_address] ansible_ssh_port=22 ansible_ssh_private_key_file=[ssh-key-file-path]

Playbook

在 Ansible 中,一个配置管理脚本称为 Playbook (剧本)。

# playbook.yml
- name: Playbook 示例
  hosts: Prod
  tasks:
    - name: 拉 GitHub 仓库的代码 (开启 SSH ForwardAgent)
      git:
        repo: '[email protected]:xxx/xxx.git'
        dest: /dest/path
    - name: 在指定目录运行 Shell 命令
      shell: npm install
      args:
        chdir: /git-repo/path
    - name: 同步文件
      synchronize:
        src: source/path
        dest: /source/path
    - name: 管理 supervisor 进程
      supervisorctl: name=[process-name] state=[start|stopped]
    - name: 更新 nginx 配置文件
      template: src=templates/nginx_conf.j2
                dest=/etc/nginx/conf.d/example.conf
    - name: 重启 nginx
      service: name=nginx state=reloaded

执行 Playbook:

ansible-playbook -i path-to-my-inventory playbook.yml;

ansible.cfg

ansible.cfg 查找顺序:

  1. 环境变量: ANSIBLE_CONFIG
  2. ./ansible.cfg (当前目录)
  3. ~/.ansible.cfg (home 目录)
  4. /etc/ansible/ansible.cfg
[defaults]
transport = ssh
log_path=ansible.log

[ssh_connection]
ssh_args = -o ForwardAgent=yes -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=4h -o ControlPath=~/.ssh/%h-%p-%r

开启 SSH ForwardAgent

~/.ssh/config:

Host [server-address-here] [ip-address-here]
    ForwardAgent yes