您的位置:首页 > 其它

ansible学习笔记-playbook常用模块

2017-12-25 00:00 465 查看
摘要: template、set_facs、pause、wait_for、assemable

1、template 模板文件

(1)在模板中调用外部的变量,调用方式{{ xxx }}

(2)模板中可以使用jinja的语法,如循环、条件、宏等

#注意: 在{% %}中使用外部变量,不能加{{}}
{% for ip in ansible_all_ipv4_addresses %}
{{ ip }};
{% endfor %}
# group_names  主机所在组名
{% if 'node_slave' in group_names %}
slave
{% else %}
master
{% endif %}


2、set_facs

运行过程中在受控主机上设置变量或计算变量值

---
- hosts: localhost
tasks:
- name: set fact 1
set_fact: foo="[ 'zero' ]"

- name: set fact 2
set_fact: foo="{{ foo }} + [ 'one' ]"

- name: set fact 3
set_fact: foo="{{ foo }} + [ 'two', 'three' ]"

- name: set fact 4
set_fact: foo="{{ foo }} + [ '{{ item }}' ]"
with_items:
- four
- five
- six
- debug: var=foo

输出:
"foo": [
"zero",
"one",
"two",
"three",
"six"
]


3、include_role 任务中添加角色

(1)常用方式

---
- hosts: localhost
vars:
flag: false
tasks:
- name: bbbbbbbb
shell: echo bbbb

- name: include test                 #方式1
include_role: name=test

- name: include test 2               #方式2
include_role:
name: test

- name: cccccccccc
shell: echo cccccccc


role中可以继续使用include_role

注意:最好不要这样,如果循环调用中调用前面的role,会出现死循环。

(2)陷阱

a、使用when时,不能使用变量值

---
- hosts: localhost
vars:
flag: false
tasks:
- name: bbbbbbbb
shell: echo bbbb

- name: include test
include_role: name=test
when: flag			#flag是变量,会报错

- name: cccccccccc
shell: echo cccccccc


b、可以使用with_items

---
- hosts: localhost
vars:
flag: false
tasks:
- name: bbbbbbbb
shell: echo bbbb

- name: include test
include_role: name=test
with_items:
- myname: dxx

- name: cccccccccc
shell: echo cccccccc


4、pause 暂停模块,用于与用户交互

---
- name: time wait
pause: seconds=30
- name: wait on user choose
pause: prompt="Warning Detected slight issue .ENTER to continue CTRL_C to quit"


5、wait_for

用于启动某些进程需要一些时间很有用,如tcp端口是否连接

---
- hosts: webapps
tasks:
- name: install tomcat6
yum: name=tomcat6 state=installed
- name: service start
service: name=tomcat6 state=start
- name: wait for tomcat6 to start
wait_for: port=8080 state=started


6、assemable 将多个文件合并成一个文件

---
#受控主机免密登录dan、linna、wuzhu主机
- hosts: all
tasks:
- name: make /opt/sshkeys dirctory
file: path=/opt/sshkeys state=dirctory owner=root group=root mode=0700
- name: copy sshkey over
copy: src=/keys/{{item}}.pub dest=/opt/sshkeys/{{item}}.pub owner=root group=root mode=0600
with_items:
- dan
- linna
- wuzhu
- name: make /root/.ssh dirctory
file: path=/root/.ssh state=dirctory owner=root group=root mode=0700
- name: build the authorized_keys file
assemable: src=/opt/sshkeys dest=/root/.ssh/authorized_keys


6、其他模块

(1)add_host

动态添加受管主机到playbook中

(2)get_url、uri

- name: download foo.conf
get_url: url=http://example.com/path/file.conf dest=/tmp/foo.conf mode=0440


(3)group_by 创建组根据facts

- name: create group like 'kvm-host'
group_by: key=virt_{{ ansible_virtualization_type}}_{{ ansible_virtualization_role }}


(4)script

将控制主机的脚本在被管理主机上运行

(5)debug 调试

- name: debug
debug: msg="{{ansible_distribution}}"  var="aaaa"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Ansible playbook