定义组
# 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
155.5.1. 包含文件用法
我们将下面的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
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。
时间: 2024-09-25 17:10:14