ansible playbook使用

- hosts: home  #对应/etc/ansible/hosts的组或者ip
  remote_user: root  #执行用户
  tasks: #任务
  - name: install httpd  #任务名
    yum: name=httpd state=present
  - name: install net-tools
    yum: name=net-tools state=present
  - name: install tree
    yum: name=tree state=present
  - name: restart httpd
    service: name=httpd state=restarted

notify和handlers的使用

- hosts: home
  remote_user: root
  tasks:
  - name: install httpd
    yum: name=httpd state=present
    notify: #执行完install httpd后,再触发下一个任务事件
       - restart httpd #任务事件名
  - name: install net-tools
    yum: name=net-tools state=present
  - name: install tree
    yum: name=tree state=present
  handlers: 被触发的事件,对应上面notify
  - name: restart httpd
    service: name=httpd state=restarted
    tags: rehttpd

tags使用

- hosts: home
  remote_user: root
  tasks:
  - name: install httpd
    yum: name=httpd state=present
    notify:
       - restart httpd
  - name: install net-tools
    yum: name=net-tools state=present
  - name: install tree
    yum: name=tree state=present
  handlers:
  - name: restart httpd
    service: name=httpd state=restarted
    tags: rehttpd #标记这个任务,名字可以自定义
ansible-playbook --tags=rehttpd cs.yml #只执行文件里面rehttpd的任务
ansible-playbook --skip-tags=rehttpd cs.yml #排除rehttpd任务,执行其他任务

 使用sudo执行任务

tasks: 
  - name: run df -h
    sudo_user: test  #账号
    sudo: yes  #使用sudo执行
    shell: name=df -h

when使用

- hosts: gs
  remote_user: root
  tasks:
  - name: install httpd
    yum: name=httpd state=installed
    notify:
       - restart httpd
    when:
      - ansible_distribution == "Centos" #满足条件系统为centos
      - ansible_distribution_major_version == "6" #满足条件系统为centos6,两个条件都满足才能执行这个任务
  - name: install net-tools
    yum: name=net-tools state=installed
  - name: install tree
    yum: name=tree state=installed
  handlers:
  - name: restart httpd
    service: name=httpd state=restarted
    tags: rehttpd
- hosts: gs
  remote_user: root
  tasks:
  - name: install httpd
    yum: name=httpd state=installed
    notify:
       - restart httpd
    when: (ansible_distribution ==  "CentOS" and ansible_distribution_major_version == "7") or (ansible_distribution ==  "Centos" and ansible_distribution_major_version == "6") #满足系统是centos7或者centos6就可以执行
  - name: install net-tools
    yum: name=net-tools state=installed
  - name: install tree
    yum: name=tree state=installed
  handlers:
  - name: restart httpd
    service: name=httpd state=restarted
    tags: rehttpd

整个任务里面有出现重复调用同个模板,可以使用with_items让用同个模板的任务在一个任务里面完成

- name: "Add groups"  #创建用户组
  group: name={{ item.name }} state=present
  with_items:
    - { name: "zhang" }  #创建用户组zhang
    - { name: "zhao" }   #创建用户组zhao
  tags:
  - Add_group
- name: "Add Users" #创建账号
  user: name={{ item.name }} state=present groups={{ item.groups }}
  with_items:
    - { name: "hu", groups: "zhang" }
    - { name: "zhi", groups: "zhao" }
  tags:
  - Add_users
- name: "userdel user" #删除账号
  user: name={{ item.name }} state=absent  remove=yes
  with_items:
    - { name: "hu" }
    - { name: "zhi" }
    - { name: "zhangsan" }
    - { name: "lisi" }
    - { name: "zhaosi" }
    - { name: "zhangsi" }
    - { name: "test1" }
  tags:
  - Del_Users
原文地址:https://www.cnblogs.com/yunweiweb/p/12990031.html