Ansible Playbook应用

目录:
  1. Ansible Playbook 介绍
  2. Ansible 组件
  3. Ansible 示例1:远程执行shell脚本
  4. Ansible 示例2:远程安装nginx1.12剧本
  5. Ansible 示例3:远程安装nginx1.12剧本(使用notify来触发handler)
  6. Ansible 示例4:template模板&变量定义和引用实战
  7. Ansible 示例5:基于列表 items 多个值创建用户
Ansible Playbook 介绍
  • Ansible可以使用单个模块,通过AD-HOC点对点模式去远程机器配置和管理,也可以将多个模块进行组合,形成剧本(playbook)任务
  • 通过Playbook任务,能够集中管理多个任务,将多个任务关联起来,从而实现更加复杂工作,满足生产环境的各个需求,提高运维人员管理服务器效率
  • Playbook剧本的产物YAML文件,类似XML接口(Tomcat)文件,内部有固定语法、参数等,要掌握常用的YAML语法编写,掌握满足运维管理方向的语法即可
Ansible 组件
  1. Playbooks 组件包括如下:
  • Target 定义 playbook 的远程主机组;

  • Variable 定义 playbook 使用的变量;

  • Task 定义远程主机上执行的任务列表;

  • Handler 定义 task 执行完成以后需要调用的任务,例如配置文件被改动,则启动 handler 任务重启相关联的服务。

  1. Target 常用参数如下
  • hosts 定义远程主机组;
  • user 执行该任务的用户;
  • sudo 设置为 yes 的时候,执行任务的时候使用 root 权限;
  • sudo_user 指定 sudo 普通用户;
  • connection 默认基于 SSH 连接客户端;
  • gather_facks 获取远程主机 facts 基础信息。
  1. Variable 常用参数如下:
  • vars 定义格式,变量名:变量值;
  • vars_files 指 定 变 量 文 件 ;
  • vars_prompt 用户交互模式自定义变量;
  • setup 模块去远程主机的值;
  1. Task 常用参数如下:
  • name 任务显示名称也即屏幕显示信息;
  • action 定义执行的动作;
  • copy 复制本地文件到远程主机;
  • template 复制本地文件到远程主机,可以引用本地变量;
  • service 定义服务的状态。

回到目录



Ansible 示例1:远程执行shell脚本
- hosts: all
  remote_user: root
  tasks:
  - name: copy nginx SHELL to Remote Server
    copy: src=/root/auto_install_nginx_v1.sh dest=/tmp/ mode=645 owner=root group=root
  - name: check Nginx SHELL File /tmp/
    shell: ls -l /tmp/auto_install_nginx_v1.sh
  - name: Jfedu Nginx WEB Server Install Process.
    shell: /bin/sh /tmp/auto_install_nginx_v1.sh


Ansible 示例2:远程安装nginx剧本
- hosts: all
  remote_user: root
  tasks:
  - name: Pcre-devel and Zlib LIB Install.
    yum:  name=pcre-devel,pcre,zlib-devel state=installed
  - name: Nginx WEB  Server Install Process.
    shell: pkill nginx;cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz
;tar xzf nginx-1.12.0.tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install;/usr/lo
cal/nginx/sbin/nginx


Ansible 示例3:远程安装nginx1.12剧本(使用notify来触发handler)

判断notify前面的任务是否执行成功或者是否存在,继而执行handlers之后的任务

- hosts: all
  remote_user: root
  tasks:
	- name: Nginx server Install 2017
      file: path=/usr/local/nginx/ state=directory 
      notify:
		- nginx install
		- nginx start
  handlers:
      - name: nginx install
        shell: cd /tmp;rm -rf nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz;tar xzf
 nginx-1.12.0.tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx;make;make install
      - name: nginx start
        shell: /usr/local/nginx/sbin/nginx

回到目录



Ansible 示例4:template模板&变量定义和引用实战

Ansible Playbook 可以自定义 template 模板文件,模板文件主要用于服务器需求不一致的情况,需要独立定义的,例如两台服务器安装了 Nginx,安装完毕之后将服务器 A 的 HTTP 端口改成 80,服务器 B 的 HTTP 端口改成 81,基于 tempalte 模块轻松实现,方法步骤如下:

  1. Ansible hosts 文件指定不同服务器不同 httpd_port 端口,代码如下:
[web]
192.168.149.128 httpd_port=80
192.168.149.129 httpd_port=81
  1. Ansible 创建 nginx.conf jinja2 模板文件,cp nginx.conf nginx.conf.j2, 并修改 listen 80 为 listen {{httpd_port}},Nginx 其他配置项不变
cp nginx.conf nginx.conf.j2
listen	{{httpd_port}};
  1. Ansible playbook 剧本 yaml
- hosts: all
  remote_user: root 
  tasks:
	- name: Nginx server Install 2017
	  file: path=/usr/local/nginx/ state=directory 
	  notify:
		- nginx install
		- nginx config

  handlers:
	- name: nginx install
	  shell: cd /tmp;rm	-rf	nginx-1.12.0.tar.gz;wget http://nginx.org/download/nginx-1.12.0.tar.gz; tar xzf nginx-1.12.0
.tar.gz;cd nginx-1.12.0;./configure --prefix=/usr/local/nginx; make;make install
	- name: nginx config
	  template:	src=/data/sh/nginx.conf.j2 dest=/usr/local/nginx/conf/nginx.conf

回到目录



Ansible 示例5:基于列表 items 多个值创建用户

基于列表 items 多个值创建用户,通过{{}}定义列表变量,with_items 选项传入变量的值

- hosts: all 
  remote_user: root 
  tasks:
	- name: Linux system Add User list. 
	  user: name={{ item }} state=present 
	  with_items:
		- user1
		- user2
		- user3

回到目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值