参数记录
ansible-playbook -i test_hosts -e "@./vars/env.yaml" -C test.yaml
-i 执行hosts配置文件
-e 指定环境变量文件
-C测试执行剧本执行是否成功(并不会真正在远程机器执行,初步测试剧本是否有问题)
模块学习:
unarchive:
功能:解压缩
unarchive: src=*.tar.gz dest=path
参数:
copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no,那么会在远程主机上寻找src源文件
src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限
template:
- name: test templates
template: src={{AnsibleDir}}/templates/config.properties dest={{bpath}}
config.properties里面的变量参数会根据指定的变量文件里面的
- import_playbook:
- import_playbook: yum.yaml
- import_playbook: uninstall.yaml
单个剧本里面引用多个剧本
wait_for
当你利用service 启动tomcat,或数据库后,他们真的启来了么?这个你是否想确认下?
wait_for模块就是干这个的。等待一个事情发生,然后继续。它可以等待某个端口被占用,然后再做下面的事情,也可以在一定时间超时后做另外的事。
connect_timeout
连接的超时时间,默认是5秒。
delay
开始轮询之前等待的秒数,默认是0。
exclude_hosts
与state=drained一起使用。用于指定,在寻找活跃的TCP链接的时候,要忽略的主机或IP列表。
host
要等待的 可解析的主机名 或 IP地址。
path
在继续之前,文件系统上必须存在的文件的路径。
port
要轮询的端口。
search_regex
用于匹配文件或socket链接中的一个字符串。
state
可以是present、started、stopped、absent、drained。
当检查端口的时候,started会确保端口打开;stopped会确保端口关闭;drained会检查活跃的链接。
当检查文件或搜索字符串的时候,present和started会确保文件或字符串存在。absent会确保文件不存在或被移除。
(Choices: present, started, stopped, absent, drained)[Default: started]
timeout
等待的超时时间。默认是300秒。
wait_for: port:8000 delay=10
等待8000端口打开,每10秒检查一次。超时时间是300秒。
wait_for: host=0.0.0.0 port=8000 delay=10 state=drained
等待所有本地IP上的8000端口,关闭活跃连接。每10秒检查一次,超时时间是300秒。
wait_for: host=0.0.0.0 port=8000 state=drained exclude_hosts=10.2.1.2,10.2.1.3
等待所有本地IP上的8000端口,关闭活跃的连接。忽略来自10.2.1.2和10.2.1.3上的连接。超时时间是300秒。
wait_for: path=/tmp/foo
一直等到/tmp/foo这个文件存在。
wait_for: path=/tmp/foo search_regex=completed
一直等到字符串completed出现在文件/tmp/foo中。
wait_for: path=/var/lock/file.lock state=absent
一直等到lock文件被删除。
wait_for: path=/proc/3466/status state=absent
一直等到进程结束,并且pid被销毁。
local_action: wait_for port=22 host="{{ ansible_ssh_host | default(inventory_hostname) }}" search_regex=OpenSSH delay=10
等待22端口被打开,并且包含字符串OpenSSH。并且不确保inventory_hostname是可解析的。每10秒检查一次,超时时间是300秒
wait_for: port={{ tomcatport }} delay=3 state=started timeout=10
roles
cd /etc/ansible/roles
mkdir {nfs-server,nfs-client} --- 创建相应角色目录
mkdir {nfs-server,nfs-client}/{vars,tasks,templates,handlers,files} --- 创建角色目录下面的子目录
[root@m01 roles]# tree
.
├── nfs-server
│ ├── files --- 保存需要分发文件目录
│ ├── handlers --- 保存触发器配置文件信息
│ ├── tasks --- 保存要执行的动作信息文件 ok
│ ├── templates --- 保存需要分发模板文件 模板文件中可以设置变量信息
│ └── vars --- 保存变量信息文件
└── nfs-client
├── files
├── handlers
├── tasks
├── templates
└── vars