| 知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
定義組
# cat /etc/ansible/hosts [www] 192.168.2.23
創建yml檔案
# cat test.yml
---
- hosts: www
user: root
tasks:
- name: no selinux
action: command /usr/sbin/setenforce 0
- name: no iptables
action: service name=iptables state=stopped
- name: made up task just to show variables work here
action: command /bin/echo release is $release
執行任務
# ansible-playbook test.yml -u root -T 1 PLAY [www] ********************* GATHERING FACTS ********************* ok: [192.168.2.23] TASK: [no selinux] ********************* ok: [192.168.2.23] TASK: [no iptables] ********************* ok: [192.168.2.23] TASK: [made up task just to show variables work here] ********************* ok: [192.168.2.23] PLAY RECAP ********************* 192.168.2.23 : ok=4 changed=2 unreachable=0 failed=0
# ansible-playbook update.yml --list-hosts
playbook: update.yml
play #1 (all): host count=11
192.168.2.10
192.168.2.11
192.168.2.12
192.168.2.13
192.168.2.15
192.168.6.10
192.168.6.11
192.168.6.12
192.168.6.13
192.168.6.15
192.168.2.9
我們將下面的playbook檔案分成三個檔案,這樣更靈活。
---
- hosts: all
remote_user: username
sudo: yes
tasks:
- yum: name=wget state=present
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
- yum: name=gcc state=present
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
tasks/cenos.yml
- yum: name=wget state=present - yum: name=gcc state=present
tasks/deban.yml
- apt: pkg=wget state=present - apt: pkg=gcc state=present
playbook.yml
---
- hosts: all
remote_user: username
sudo: yes
tasks:
- include: tasks/centos.yml
when: ansible_distribution == 'CentOS' or ansible_distribution == 'Red Hat Enterprise Linux'
- include: tasks/debian.yml
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
執行playbook
# ansible-playbook playbook.yml