目录
练习:写一个变量文件users_list.txt,里面包含一个名称为users的列表,命令如下。
?
可以使用copy模块把本地的一个文件拷贝到远端机器,下面再次复习一下。
[bdqn@RHEL813 ~]$ mkdir demo4
[bdqn@RHEL813 ~]$ cp ansible.cfg hosts demo4
[bdqn@RHEL813 ~]$ cd demo4
[bdqn@RHEL813 demo4]$ ls
ansible.cfg hosts
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ cat aa.txt
+----------------------------------------------------+
| 我的IP地址是: {{ansible_default_ipv4.address}}
+----------------------------------------------------+
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ cat 1.yaml
---
- hosts: db
tasks:
- name: 拷贝一个文件到远端主机
copy: src=aa.txt dest=/opt/aa.txt
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible-playbook 1.yaml
PLAY [db] ***************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************
ok: [server2]
ok: [server3]
TASK [拷贝一个文件到远端主机] ******************************************************************************************************************
changed: [server2]
changed: [server3]
PLAY RECAP **************************************************************************************************************************
server2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible db -m shell -a "cat /opt/aa.txt"
server2 | CHANGED | rc=0 >>
+----------------------------------------------------+
| 我的IP地址是: {{ansible_default_ipv4.address}}
+----------------------------------------------------+
server3 | CHANGED | rc=0 >>
+----------------------------------------------------+
| 我的IP地址是: {{ansible_default_ipv4.address}}
+----------------------------------------------------+
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ cat 1.yaml
---
- hosts: db
tasks:
- name: 拷贝一个文件到远端主机
template: src=aa.txt dest=/opt/aa.txt
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible-playbook 1.yaml
PLAY [db] ***************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************
ok: [server2]
ok: [server3]
TASK [拷贝一个文件到远端主机] ******************************************************************************************************************
changed: [server2]
changed: [server3]
PLAY RECAP **************************************************************************************************************************
server2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible db -m shell -a "cat /opt/aa.txt"
server2 | CHANGED | rc=0 >>
+----------------------------------------------------+
| 我的IP地址是: 192.168.103.14
+----------------------------------------------------+
server3 | CHANGED | rc=0 >>
+----------------------------------------------------+
| 我的IP地址是: 192.168.103.15
+----------------------------------------------------+
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ mv aa.txt aa.j2
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ cat 1.yaml
---
- hosts: db
tasks:
- name: 拷贝一个文件到远端主机
template: src=aa.j2 dest=/opt/aa.txt
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ mkdir templates
[bdqn@RHEL813 demo4]$
在templates目录中创建aa.j2,内容如下。
[bdqn@RHEL813 demo4]$ cat templates/aa.j2
+-----------------------------------------------------+
| 我的主机名是: {{ansible_fqdn}}
+-----------------------------------------------------+
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ cat aa.j2
+----------------------------------------------------+
| 我的IP地址是: {{ansible_default_ipv4.address}}
+----------------------------------------------------+
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible-playbook 1.yaml
PLAY [db] ***************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************
ok: [server2]
ok: [server3]
TASK [拷贝一个文件到远端主机] ******************************************************************************************************************
changed: [server3]
changed: [server2]
PLAY RECAP **************************************************************************************************************************
server2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
server3 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[bdqn@RHEL813 demo4]$
[bdqn@RHEL813 demo4]$ ansible db -m shell -a "cat /opt/aa.txt"
server2 | CHANGED | rc=0 >>
+-----------------------------------------------------+
| 我的主机名是: RHEL8
+-----------------------------------------------------+
server3 | CHANGED | rc=0 >>
+-----------------------------------------------------+
| 我的主机名是: RHEL812
+-----------------------------------------------------+
[bdqn@RHEL813 demo4]$
{% if 判断1 %}
内容1
{% elif 判断2 %}
内容2
...多个elif...
{% else %}
内容3
{% endif %}
(1)“%”两边有没有空格都可以,不过所有的“%”前后空格要保持一致,即要有都
有,要没有都没有。
(2)if和elif中的内容如果太长了,可以另起一行写。
如果判断1成立,则打印内容1,后面的条件不再判断,直接跳转到endif后面的内容;如果判断1不成立,则执行elif后面的判断2,如果成立则打印内容2,后面的条件不再判断,直接跳转到endif后面的内容。以此类推,如果所有的f和elif都不成立,则打印else中的内容。
(3)elif和 else不是必需的
[bdqn@RHEL813 demo4]$ cat templates/bb.j2
1111
{% if ansible_fqdn=="RHEL8" %}
{{ansible_fqdn}}
{% else %}
aaaa
{% endif %}
3333
[bdqn@RHEL813 demo4]$