Ansible自动化运维软件概念和原理

  1. Ansible是什么?概念剖析?

Ansible是一款基于Python语言开发的自动化运维配置管理工具,主要是用于管理Unix/Linux操作系统配置、代码、变革操作,去中心化管理,客户端无需部署Agent插件即可管理;

  1. Ansible的工作原理?

Ansible分为控制端和被控端,主要是基于SSH协议去管理客户端,被控端是无需安装Agent插件的,Ansible会读取控制端hosts文件,根据文件中定义IP列表信息,调取本地的各个模块对被控端机器实现批量、并发的配置管理和维护,如果任务比较复杂可以写成PlayBook剧本进行分发管理;

  1. Ansible自动化运维常见模块;
  1. Command,默认模块,主要是用于远程命令执行;
  2. COPY,文件拷贝模块,主要用于文件或者目录的远程拷贝;
  3. SHELL,命令模块,主要是用于远程执行SHELL(BASH)指令;
  4. YUM,软件管理模块,主要是用于远程部署、安装、卸载软件;

#yum -y install ansible

#cd /etc/ansible

#vim hosts

添加:

[www]

192.168.0.125

[docker]

192.168.0.110

[manager]               (添加的是自己本主机的ip)

192.168.0.100

保存退出

#cd

#ssh-keygen

#ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.0.125            (远程连接192.168.0.125并开启远程免密公钥)

#ansible 192.168.0.125 -m command -a "df -h"            (-m:连接模块, -a:连接命令)

#ansible www -m command -a "df -h"              (www:表示组里面的所ip)

#ansible www -m copy -a "src=/root/httpd-2.4.32  dest=/tmp/  mode=755"            (src:源目标地址,dest:目标目录  mode:添加权限)

#ansible www -m copy -a "src=/root/httpd-2.4.32  dest=/tmp/  mode=755 backup=yes"            (src:源目标地址,dest:目标目录  mode:添加权限,backup=yes:表示复杂并备份)

#ansible docker -m shell -a "systemctl start httpd;ps -ef|grep httpd"

基于Ansible批量修改Docker云主机的密码,操作指令如下:

ansible docker -m shell -a "echo 1|passwd --stdin root"

  1. 基于Ansible批量修改客户端的密码(执行脚本方式,脚本提前拷贝到客户端),并且将密码信息打印至屏幕终端;

#脚本代码如下:

cat change_password.sh

#!/bin/bash

echo $$!@QAZ$1|passwd --stdin root

echo "`hostname -I` root $$!@QAZ$1"

#执行的命令如下:

ansible 192.168.0.2 -m shell -a "/bin/bash /tmp/change_password.sh 321"

基于synchronize模块,将源目录同步至目标目录(增量同步):

ansible 192.168.0.2 -m synchronize -a 'src=/tmp/ dest=/tmp/'

基于synchronize模块,将源目录同步至目标目录(完全同步):

ansible 192.168.0.2 -m synchronize -a 'src=/tmp/ dest=/tmp/ delete=yes'

  1. Ansible Playbook剧本概念&实战演练
  1. Ansible可以使用单个模块,通过AD-HOC点对点模式去远程机器配置和管理,也可以将多个模块进行组合,形成剧本(playbook)任务;
  2. 通过Playbook任务,能够集中管理多个任务,将多个任务关联起来,从而实现更加复杂工作,满足生产环境的各个需求,提高运维人员管理服务器效率;
  3. Playbook剧本的产物YAML文件,类似XML接口(Tomcat)文件,内部有固定语法、参数等,要掌握常用的YAML语法编写,掌握满足运维管理方向的语法即可;
  4. Ansible-Playbook剧本案例一:(远程拷贝SHELL脚本,并且执行SHELL脚本)
  5. vim nginx.yaml        

- 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

  1. Ansible-Playbook剧本案例二:(远程源码部署Nginx WEB软件)

- hosts: all

  remote_user: root

  tasks:

  - name: Jfedu Pcre-devel and Zlib LIB Install.

    yum:  name=pcre-devel,pcre,zlib-devel state=installed

  - name: Jfedu  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

  1. Ansible-Playbook剧本案例三:(判断notify前面的任务是否执行成功或者是否存在,继而执行handlers之后的任务)

- hosts: 192.168.0.123

  remote_user: root

  tasks:

      - name: Nginx server Install 2017

        copy: src=/etc/profile dest=/etc/

        notify:

            - nginx1

            - nginx2

  handlers:

      - name: nginx1

        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: nginx2

        shell: /usr/local/nginx/sbin/nginx

  1. Ansible-Playbook剧本案例四:(支持template模板&变量定义和引用实战)

- hosts: 192.168.0.12*

  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;/usr/local/ngin

x/sbin/nginx

      - name: nginx config

        template: src=/root/nginx.conf.j2 dest=/usr/local/nginx/conf/nginx.conf

  1. Ansible配置文件概念剖析&性能优化

Ansible主配置文件:/etc/ansible/ansible.cfg,主要是用于Ansible程序参数、配置、模板统一调整,全局的配置文件;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值