为何要学习yaml和json呢?这玩意在生产环境尤为重要。
一、编写yaml文件
---
- hosts: all
tasks:
- name: Install httpd
yum: name=httpd state=present
- name: test copy
template: src=/root/1.txt dest=/root/1.txt
notify:
- Start chrony
- name: ensure http is running
service: name=httpd state=started
handlers:
- name: Start chrony
service: name=chronyd state=started
|
二、测试yaml语法
[root@docker1 ~]# ansible-playbook http.yml --syntax-check
playbook: http.yml
|
三、编写主机文件hosts,类似inventory,其实名字无所谓,随意命名。
[root@docker1 ~]# cat /root/hosts
[httpd]
192.168.3.141
|
其实可以直接用ip,kolla-openstack用主机名或者域名都可以。
三、执行ansible-playbook
[root@docker1 ~]# ansible-playbook -i hosts http.yml -k
SSH password:
|
后面-k可以不加,采用免密登录,今晚时间有限,我就不搞免密了。
看看执行结果:
PLAY [all] ********************************************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [192.168.3.141]
TASK [Install httpd] **********************************************************************************************************************************************
ok: [192.168.3.141]
TASK [test copy] **************************************************************************************************************************************************
changed: [192.168.3.141]
TASK [ensure http is running] *************************************************************************************************************************************
changed: [192.168.3.141]
RUNNING HANDLER [Start chrony] ************************************************************************************************************************************
changed: [192.168.3.141]
PLAY RECAP ********************************************************************************************************************************************************
192.168.3.141 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|
其实内容标题都是我们自定义的。
TASK [Gathering Facts] ------收集对象主机setup信息,这步可以前面加参数去掉。