写剧本时的一个小技巧:
(将在Tab键按下时执行一个双空格缩进,并自动缩进后续行)
vim ~/.vimrc
autocmd FileType yaml setlocal ai ts=2 sw=2 et
先写一个简单的脚本文件练习:
一、创建剧本config_nginx.yml。完成以下功能:
1、安装nginx
2、提供默认主页
3、启动并开机自启服务。
vim config_httpd.yml
---
- hosts: dev
tasks:
- name: install httpd
yum:
name: httpd
- name: index.html
copy:
content: 'This is test page.\n'
dest: /var/www/html/index.html
- name: config service
service:
name: httpd
state: started
enabled: yes
- name: firewalld
firewalld:
service: http
permanent: yes
immediate: yes
state: enabled
语法检查:
[student@workstation ansible]$ ansible-playbook config_httpd.yml --syntax-check
playbook: config_httpd.yml
运行结果:
[student@workstation ansible]$ ansible-playbook config_httpd.yml
PLAY [dev] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [servera]
TASK [install httpd] ***********************************************************
ok: [servera]
TASK [index.html] **************************************************************
ok: [servera]
TASK [config service] **********************************************************
ok: [servera]
TASK [firewalld] ***************************************************************
changed: [servera]
PLAY RECAP *********************************************************************
servera : ok=5 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
二、创建一个名为/home/devops/ansible/packages.yml的剧本
1.在dev, prod 和 test 主机组中安装 php 和 mariadb 软件包
2.在dev 主机组中安装 Development Tools 包组
3.升级dev主机组中主机的所有软件包
方法一:
三个条件分开写:
vim packages.yml
---
- name: play1
hosts: dev,prod,test
tasks:
- name: Install php
yum:
name: php
- name: Install mariadb
yum:
name: mariadb
- name: play2
hosts: dev
tasks:
- name: install Development Tools
yum:
name: "@Development Tools"
- name: play3
hosts: dev
tasks:
- name: updage all
yum:
name: '*'
state: latest
考点:yum模块的使用安装软件包组时需要在前面加@符号,还有注意的是,每隔一个等级空两格,installed 代表安装,latest代表安装最新版本
执行结果:
[student@workstation ansible]$ ansible-playbook packages.yml --syntax-check
playbook: packages.yml
[student@workstation ansible]$ ansible-playbook packages.yml
PLAY [play1] **************************************************************************
TASK [Gathering Facts] ****************************************************************
ok: [serverc]
ok: [serverb]
ok: [serverd]
ok: [servera]
TASK [Install php] ********************************************************************
changed: [servera]
changed: [serverc]
changed: [serverd]
changed: [serverb]
TASK [Install mariadb] ****************************************************************
changed: [servera]
changed: [serverc]
changed: [serverb]
changed: [serverd]
PLAY [play2] **************************************************************************
TASK [Gathering Facts] ****************************************************************
ok: [servera]
TASK [install Development Tools] ******************************************************
changed: [servera]
PLAY [play3] **************************************************************************
TASK [Gathering Facts] ****************************************************************
ok: [servera]
TASK [updage all] *********************************************************************
ok: [servera]
PLAY RECAP ****************************************************************************
servera : ok=7 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverb : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverc : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
serverd : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0