文章目录
playbook ,也叫剧本,是 ansible 的配置、部署、编排语言。它们可以北描述为一个需要希望远程主机执行命令的方案,或者一组 ansible 模块程序运行的命令
playbook组成
hosts
:运行指定任务的目标主机或主机组,需要先在/etc/ansible/hosts
文件中定义remote_user
:选择在远程主机以哪个用户的身份执行剧本sudo_user
:设置非管理员有哪些成分tasks
:任务列表,由各个模块和参数组成
# 对象:webserver组的主机
# 用户:root
# 任务:创建一个名为nginx1,uid为3000的用户
# 安装nginx
# 启动nginx
- hosts: webservers
remote_user: root
tasks:
- name: create a user # 当前任务名
user: name=nginx1 uid=3000 # 使用的模块及模块参数
ignore_errors: yes
- name: install nginx
yum: name=nginx state=present
- name: start nginx service
service: name=nginx state=started
-
检测playbook影响的主机及任务,check一下,并不会真正执行
ansible-playbook -C --list-hosts --list-tags --list-tasks test.yml
playbook核心组件
Tasks
任务,由模块定义的操作的列表
Variables
变量,当我们需要定制一些模板时,需要从外部传入变量来配置 playbook,这种传入变量的语法为 Jinja2:{
{ var }}
括号两边都是有空格的
-
方法1:在执行 playbook 时使用
-e
选项来指定变量ansible-playbook -e pkgname=nginx install_nginx.yaml
# install_nginx.yaml - hosts: webservers remote_user: root tasks: - name: install { { pkgname }} yum: name={ { pkgname }} tags: install { { pkgname }} - name: start { { pkgname }} service: name= { { pkgname }} state=started enabled=true
-
方法2:在 playbook 中使用
vars
初始化变量- hosts: webservers remote_user: root vars: - pkgname: nginx tasks: - name: install { { pkgname }} yum: name={ { pkgname }} tags: install { { pkgname }} - name: start { { pkgname }} service: name=