ansible自动化(二)

一、安装支持包

  yum -y install lrzsz vim net-tools gcc gcc-c++ ncurses ncurses-devel zlib-devel zlib openssl-devel openssl

二、源码编译Python3.5

  下载安装包:

  解压: tar xf Python-3.5.2.tgz -C /usr/src/

  移动: cd /usr/src/Python-3.5.2/

  预配置: ./configure --prefix=/usr/local/python/

  编译: make && make install

  创建软链接: ln -s /usr/local/python/bin/python3 /usr/bin/python3

  查看命令是否存在: which python3

  查看命令版本: python3 -V (linux下默认2.6版本,基本不用)

三、使用pip3安装ansible(ansible的批量分发调用模块时,基本都需要Python)

安装ansible最新版本(用pip3的方式安装,下了Python就有这个命令,这是开发装软件的方式,需要用到网络):

  /usr/local/python/bin/pip3 install ansible

若在此处报错pip,就按下条命令执行:

  /usr/local/python/bin/pip3 install --upgrade pip

  /usr/local/python/bin/pip3 install ansible

安装好ansible后,创建软链接: ln -s /usr/local/python/bin/ansible /usr/local/bin

查看命令: which ansible

查看ansible的版本: ansible --version

ansible查看帮助:

查看ansible的总帮助: /usr/local/python/bin/ansible-doc -l

查看shell模块的帮助: /usr/local/python/bin/ansible-doc(总帮助) -s(选择模块) shell

           /usr/local/python/bin/ansible-doc -s raw

四、分发密钥

生成密钥对: ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""

 

分发密钥: scp .ssh/id_rsa.pub root@192.168.126.151:/root/.ssh

测试免密连接: ssh 192.168.126.151 (默认用root连接)

五、ansible连接web服务器的配置文件

创建目录: mkdir -p /etc/ansible

创建文件: touch /etc/ansible/hosts

写入配置文件内容: vim /etc/ansible/hosts (这里的主机名可以不映射,因为后面的IP已经映射过了)

六、ansible的使用方法

获取web的平均负载值: ansible web01 -m command -a 'uptime'

ansible -i /etc/ansible/hosts/ 主机或主机组 -m 指定模块 -a 命令

-i (指定配置文件位置,如果不指定,默认到ansible配置文件/etc/ansible/hosts找)

检查服务器是否正常: ansible all -m ping (ping不需要-a指定参数)

 

command模块 命令不支持管道符、重定向操作 (连接端需要支持Python)

shell模块 命令支持管道符、重定向操作。shell模块大部分命令都支持。(连接端需要支持Python)

raw模块 最原始的方式执行命令(只有极少数情况下使用,可以不依赖Python,仅通过ssh实现。)

 copy模块 批量下发文件或文件夹自动备份,更改属主属组。

script模块 能够实现远程服务器批量运行本地的shell脚本/server/scripts/

编译脚本:

编写nginx安装脚本: vim auto_nignx.sh

#!/bin/sh
#nginx install shell scripts

test -d /media/cdrom || mkdir -p /media/cdrom
mount /dev/sr0 /media/cdrom &> /dev/null
yum -y install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel &> /dev/nul
l
test -d /service/scripts || exit 3
cd /service/scripts
tar xf nginx-1.10.2.tar.gz -C /usr/src
cd /usr/src/nignx-1.10.2/
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module &> /d
ev/null
make &> /dev/null
make install &> /dev/null
exit 0

编写分发脚本: vim fenfa.sh

#!/bin/sh

Group=$1

ansible $Group -m copy -a "src=/service/scripts dest=/bin/sh /service/scripts/ mode=0755"
ansible $Group -m scripts -a "/service/scripts/auto_nginx.sh"

执行分发脚本:

 七、剧本play-book和ansible共同使用的方式

创建软链接: ln -s /usr/local/python/bin/ansible-playbook /usr/local/bin/

查看命令: which ansible-playbook

设定剧本: vim test_shell.yaml

剧本用.yaml结尾。

执行剧本: ansible-playbook test_shell.yaml

当传输过程中出错误时,更改一下配置文件: vim /etc/ssh/sshd_config

更改配置文件之后需要重启: service sshd reload

nignx配置下发并检测:

 

在剧本中引入自定义变量:

 ansible系统内置变量的取用方法: ansible all(或自己的IP地址) -m setup | less

python3的使用方法:

在命令界面直接输入python3

Python3中取键值的方法:

利用template模块下发可变的配置文件:

  下发配置文件里面使用判断语法:

  测试执行(自定义一个端口号):

  执行脚本:

   测试不定义端口号(置空):

  再次执行脚本:

playbook的notify通知和下发nginx配置

如果你下发的文件引起它改变了,它通知在执行一遍文件,如果他没有引起改变,则通知不下发就不会触发改变对方服务。

原文地址:https://www.cnblogs.com/mashuang/p/10093652.html