playbook语法和命令

来源:互联网 发布:云教学平台为您优化 编辑:程序博客网 时间:2024/06/15 22:53

Playbook采用YAML语法编写。
playbook 由一个或多个 ‘plays’ 组成.它的内容是一个以 ‘plays’ 为元素的列表.

---- hosts: all  sudo: yes  tasks:   - name: 安装Apache     yum: name={{ item }} state=present     with_items:     - httpd     - httpd-devel   - name: 复制配置文件     copy:       src: "{{ item.src }}"       dest: "{{ item.dest }}"       owner: root       group: root       mode: 0644     with_items:     - {       src: "/tmp/httpd.conf",         dest: "/etc/httpd/conf/httpd.conf" }     - {       src: "/tmp/httpd-vhosts.conf",       dest: "/etc/httpd/conf/httpd-vhosts.conf"       }   - name: 检查Apache运行状态,并设置开机启动     service: name=httpd state=started enabled=yes

注意事项:

  1. playbook以“—“开头
  2. -name:”字段并不是一个模块,不会执行任务实质性的操作,它只是给“task” 一个易于识别和名称。即便把name字段对应的行完全删除,也不会有任何问题。
  3. 一个playbook包含一个或多个tasks
  4. 通过{{ var }}或{{item.var}}形式对变量进行引用

ansible-playbook命令
直接执行:

 ansible-playbook playbook.yml

限定执行范围:
指定主机:

ansible-playbook playbook.yml --limit-host host1 host2

指定主机组:

ansible-playbook playbook.yml --limit webservers

这样以来(假设你的inventory文件中包含webserver组),即便playbook中设定“hosts: all”,但也仅对webserver组生效

如果想知道在执行playbook时,哪些主机将会受影响,则使用–list-hosts选项:

ansible-playbook playbook.yml --list-hosts

用户与权限:
使用 –remote-user选项来指定用户:

ansible-playbook playbook.yml --remote-user=tom

在某些情况下,我们需要传递sudo密码到远程主机,来保证sudo命令的正常运行。这时,可以使用–ask-sudo-pass (-K)选项来交互式的输入密码。比如,当前用户Tom想以Jerry的身份运行playbook,命令如下:

$ ansible-playbook playbook.yml --sudo --sudo-user=jerry --ask-sudo-pass

执行过程中,会要求用户输入Jerry的密码。

其它选项:

--inventory=PATH (-i PATH):指定inventory文件,默认文件是/etc/ansible/hosts--verbose(-v):显示详细输出,也可以使用-vvvv显示精确到每分钟的输出--extra-vars=VARS(-e VARS):定义在playbook使用的变量,格式为:"key=value,key=value"--forks=NUM ( -f NUM):指定并发执行的任务数,默认为5,根据服务器性能,调大这个值可提高ansible执行效率--connection=TYPE ( -c TYPE):指定连接远程主机的方式,默认为ssh,设为local时,则只在本地执行playbook,建议不做修改--check:检测模式,playbook中定义的所有任务将在每台远程主机上进行检测,但并不直正执行

参考链接:
http://www.ansible.com.cn/docs
http://www.jianshu.com/p/41c4ed3ce779

原创粉丝点击