对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定。Playbook 是 Ansible 真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色 及包含指令来重用既有内容。下面我们来看看一些具体的实例。
1:更改客户机的系统密码:
建立为**.yaml格式的文件,文件的格式如下:
tasks: 任务。
- name: update wolfplus password 给这个任务取的名字。
user: name=wolfplus 需要更改密码的账户,
password=$1$i2mkzxtD$M2F/Cx3f8XzUBB/Y4PEYw1 更新后的密码。
**:注意,这个password=后面字符串并不是真正的密码,这个是由于ansible对密码口令必须要使用
openssl passwd -1 密码 加密,注意加密后的字符串才能被ansible识别。例如上述字符串实际上是由:
openssl passwd -1 123 得来的。所以我的真正密码才是123。
好了,我的ansible-playbook文件编辑好了,现在要执行了,
可以敲入:
ansible-playbook passwd.yaml -K由于我使用了sudo切需要密码,所以,我后面必须加-K。输入远程机器上的ssh密码,开始执行,如下面所示:
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.0.128]
ok: [192.168.0.133]
TASK: [update wolfplus password] **********************************************
changed: [192.168.0.128]
changed: [192.168.0.133]
PLAY RECAP ********************************************************************
192.168.0.128 : ok=2 changed=1 unreachable=0 failed=0
192.168.0.133 : ok=2 changed=1 unreachable=0 failed=0
密码已经更改生效,我们就可以使用123去登录web那两台机器了。
下面我们再来列举一个安装memcached软件的例子。
我们来编辑apt-get.yaml 文件,文件里面具体类容为:
---
- hosts: web
sudo: yes
tasks:
- name: remove memcached
apt: pkg=memcached state=present
选项解析: hosts:web web所在的主机组。 sudo: yes 启用sudo。
tasks: -name: 描述任务。 apt:pkg=memcached 利用apt模块,安装软件的包名为:
memcached
state=
present 状态为安装。
state=
absent 状态为卸载。
好了,现在开始运行安装memcached。 执行下列命令:ansible-playbook apt-get.yaml -K
sudo password:
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.0.128]
ok: [192.168.0.133]
TASK: [install memcached] *****************************************************
changed: [192.168.0.128]
changed: [192.168.0.133]
PLAY RECAP ********************************************************************
192.168.0.128 : ok=2 changed=1 unreachable=0 failed=0
192.168.0.133 : ok=2 changed=1 unreachable=0 failed=0
看到结果,
ok=2 changed=1 说明客户机上的memcached已经安装成功了。
下面再列举一个关于创建crontab的实例。
我们来编辑cron.yaml文件,让每月20日来运行wp.sql脚本。具体类容如下:
---
- hosts: web
tasks:
- name: cron
cron: name="test job" day="20" job="/home/wolfplus/wp.sql"
我们来测试下执行远程创建cron,执行 ansible-playbook cron.yaml
PLAY [web] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.0.128]
ok: [192.168.0.133]
TASK: [cron] ******************************************************************
changed: [192.168.0.128]
changed: [192.168.0.133]
PLAY RECAP ********************************************************************
192.168.0.128 : ok=2 changed=1 unreachable=0 failed=0
192.168.0.133 : ok=2 changed=1 unreachable=0 failed=0
看到
ok=2 changed=1 这类消息说明cron已经创建成功了,我们来验证下:登录到客户机上查看如下:
wolfplus
@ubuntu :~$ crontab -l
#Ansible: test job
* * 20 * * /home/wolfplus/wp.sql
看到创建了一个每月20日,运行wp.sql的任务计划。
好了,测试的实例已经差不多了。大家可以用 ansible-doc -l 命令来查看它内置的有哪些模块。
然后利用
ansible-doc copy 来查看copy模块的具体用法。
到此,今天测试的ansible的结束了。