Ansible教程 第五章 Playbook使用详解

playbook书写规范

shell脚本
转换成yaml文本
总结规范

代码清单4-1,详细解剖代码

playbook限定主机执行范围

用户与权限设置:
--remote-user,这个参数,实际上没有,书上有。后面测试下,有没有???su sudo需要好好研究

三个实战


handlers

playbook中的变量

注册变量

Facts

Vault

条件流程控制

yam语言格式(以奔跑吧,ansible为主):
文档以—-标记文档的开始

号用来表示注释

列表使用减号“-”作为分隔符
字典
拆行 >

key/value的值可同行写也可换行写,同行使用“:”分隔,换行写需要以“-”分隔。?????????????

state=present state=

用户与权限设置:

  1. —remote-user
    在playbook中,如果在hosts字段里没有定义users关键字,那么ansible将会使用你在inventory文件中定义的用户,如果inventory文件中也没有定义用户,ansible讲默认使用当前系统用户身份来通过ssh连接到远程主机,来运行playbook的内容。
    ansible-playbook playbook.yml —remote-user=weblogic
  2. —ask-sudo-pass 或 -K
    传递sudo密码到远程主机,来保证sudo命令的正常运行。
  3. —sudo
    可以强制所有play都使用sudo用户,同时使用—sudo-user选项指定sudo可以执行哪个用户的权限,如果不指定,则默认以root身份运行。
    示例:当前用户tom想以jrry的身份运行playbook:
    ansible-playbook playbook.yml —sudo —sudo-user=jrry —ask-sudo-pass

如果有大量的复制或深度递归的文件夹,用synchronize模块来处理

示例一:部署Apache服务

  • hosts: all
    sudo: yes
    tasks:
    • name: 安装Apache
      yum: name={{item}} state=present
      with_items:

      • httpd
      • httpd-devel
    • name: 复制配置文件
      copy: src={{item.src}} des={{item.dest}} owner=root group=root mode=0644
      with_items:

      • {
        src: "/tmp/htttpd.conf"
        dest: "/etc/httpd/conf/httpd.conf"
        }
      • {
        src: "/tmp/htttpd-vhosts.conf"
        dest: "/etc/httpd/conf/httpd.vhosts.conf"
        }
    • name: 检查Apache运行状态
      service: name=httpd state=started enable=yes

———————————————————————————————————————————————————————-------------------
实战1:ansible部署node.js


  • name: ""
    hsots: all
    tasks:
    • name: 获取正在运行的node.js app列表
      command: forever list
      register: forever_list
      changed_when: false
    • name:启动node.js app
      command: "forever start {{node_apps_location}}/app/app.js"
      when: "forever_list.stdout.fine('{{node_apps_location}}') == -1"

你可能感兴趣的:(Ansible教程 第五章 Playbook使用详解)