Bootstrap

Ansible之Playbook详解


playbook ,也叫剧本,是 ansible 的配置、部署、编排语言。它们可以北描述为一个需要希望远程主机执行命令的方案,或者一组 ansible 模块程序运行的命令

大量playbook实例

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= 
;