04.Ansible的Playbook模式

Ansible的Playbook模式

1、概念

playbook的基础组件:

  • Hosts:运行指定任务的目标主机;

  • remoute_user: 在远程主机上执行任务的用户;

  • sudo_user: tasks:任务列表

  • 模块,模块参数; 格式:

    • (1) action: module arguments (2) module: arguments

      注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;

      (1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;

      (2) 任务可以通过"tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;

运行playbook的方式:

  • (1) 测试

    • ansible-playbook --check 只检测可能会发生的改变,但不真正执行操作;
    • ansible-playbook --list-hosts 列出运行任务的主机;
  • (2) 运行

    • handlers: 任务,在特定条件下触发; 接收到其它任务的通知时被触发;

    • notify: HANDLER TASK NAME

    • variables:
      (1) facts:可直接调用;

      注意:可使用setup模块直接获取目标主机的facters;

    • (2) 用户自定义变量:

    • (a) ansible-playbook命令的命令行中的
      -e VARS, --extra-vars=VARS

    • (b) 在playbook中定义变量的方法: vars: var1: value1 - var2: value2 变量引用:{{ variable }}

2、示例

install_redis.yaml

- hosts: 10.9.251.30
  remote_user: root
  tasks:
  - name: install resdis
    yum: name=redis state=latest
  - name: start redis
    systemd: name=redis state=started enabled=true
  • 检查语法
ansible-playbook install_redis.yaml --syntax-check
  • 列出执行主机
ansible-playbook install_redis.yaml --list-hosts

playbook: install_redis.yaml

  play #1 (10.9.251.30): 10.9.251.30	TAGS: []
    pattern: [u'10.9.251.30']
    hosts (1):
      10.9.251.30
  • 列出任务
ansible-playbook install_redis.yaml --list-tasks

playbook: install_redis.yaml

  play #1 (10.9.251.30): 10.9.251.30	TAGS: []
    tasks:
      install resdis	TAGS: []
      start redis	TAGS: []
  • 执行任务
ansible-playbook -C install_redis.yaml

PLAY [10.9.251.30] *************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************
ok: [10.9.251.30]

TASK [install resdis] **********************************************************************************************************************************************************************************************************************
changed: [10.9.251.30]

TASK [start redis] *************************************************************************************************************************************************************************************************************************
changed: [10.9.251.30]

PLAY RECAP *********************************************************************************************************************************************************************************************************************************
10.9.251.30                : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
上一篇:Ansible-playbook自动部署MySQL主从


下一篇:list与Set、Map区别及适用场景