自动化运维之Ansible(二)

本文将讲述ansible的各种安装方式以及Ansible的配置文件

Ansible的安装

ansible可以通过多种方法进行安装,yum、编译、pip和git,都能安装ansible以下演示ansible的各种安装方式

yum安装

ansible安装最简单的方法可以使用rpm包进行安装,因为ansible已经被收入到的EPEL源中,在配置好yum源后就可以使用yum命令直接安装

1
2
3
4
#配置EPEL源
[root@localhost ~]# yum install epel-release -y
#安装ansible
[root@localhost ~]# yum install ansible -y

编译安装

编译安装ansible时需要先下载ansible的源码包,然后对其进行进行编译安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#下载源码包
[root@localhost ~]# wget https://releases.ansible.com/ansible/ansible-latest.tar.gz
#安装编译所需的包组
[root@localhost ~]# yum install python-jinja2 PyYAML python-paramiko python-babel python-crypto -y
#解压源码包
[root@localhost ~]# tar xf ansible-latest.tar.gz -C /usr/src/
#编译安装ansible
[root@localhost ~]# cd /usr/src/ansible-2.8.4/
[root@localhost ansible-2.8.4]# python setup.py build
[root@localhost ansible-2.8.4]# python setup.py install
#创建出ansible的配置文件目录
[root@localhost ansible-2.8.4]# mkdir /etc/ansible
#将配置文件复制到ansible配置文件目录下
[root@localhost ansible-2.8.4]# cp -r examples/* /etc/ansible

git安装

使用git命令直接将github上的ansible的项目克隆下来也能进行安装

1
2
3
4
5
#克隆项目
[root@localhost ~]# git clone git://github.com/ansible/ansible.git --recursive
#安装
[root@localhost ~]# cd ./ansible
[root@localhost ~]# source ./hacking/env-setup

pip安装

由于anisble是基于python所写,所以ansible开可以基于pip来进行安装,pip是安装python包的管理器,其功能类似于yum

1
2
3
4
5
6
7
8
#安装epel源
[root@localhost ~]# epel-release
#安装pip安装所需要的各种包
[root@localhost ~]# yum install python-pip python-devel gcc glibc-devel zlib-devel rpm-build openssl-devel
#更新pip
[root@localhost ~]# pip install --upgrade pip
#安装ansible
[root@localhost ~]# pip install ansible --upgrade

以上就是ansible的各种安装方法,可以任选一种进行安装


ansible的配置文件

ansible安装完毕后将在主机上生成了众多的文件,以下为一些较为重要的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
#配置文件
/etc/ansible/ansible.cfg #主配置文件,配置ansible工作特性
/etc/ansible/hosts #主机清单
/etc/ansible/roles/ #存放角色的目录

#程序
/usr/bin/ansible #主程序,临时命令执行工具
/usr/bin/ansible-doc #查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy #下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook #定制自动化任务,编排剧本工具
/usr/bin/ansible-pull #远程执行命令的工具
/usr/bin/ansible-vault #文件加密工具
/usr/bin/ansible-console #基于Console界面与用户交互的执行工具

主机清单inventory

ansible的主要功能在于批量的主机操作,为了便捷地使用其中的部分主机,可以在主机清单中将其分组命名。 默认的主机清单文件为/etc/ansible/hosts文件,主机清单文件可以有多个,也可以通过Dynamic Inventory来动态生成。

主机清单格式

主机清单文件遵循INI文件风格,中括号中的字符为组名。可以将同一个主机同时归并到多个不同的组中;此外,当目标主机使用了非默认的ssh端口,还可以在主机名称之后使用冒号加端口号来标明。

1
2
3
4
5
6
[websever]                      #中括号中的字符为组名
192.168.73.134
192.168.73.135:9527 #如果目标主机使用了非标的ssh端口可以在主机名后跟上端口号
[appsever]
192.168.73.134 #同一主机可以归类至不同的组中。
192.168.73.[01:10] #如果主机名遵循相似的命名模式,还可以使用列表的方式来标识各主机,表示ip地址最后一位01到10的主机

ansible配置文件

ansible的配置文件为/etc/ansible/ansible.cfg,此文件一般不做改动,保持默认配置。

配置文件中主要内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
[defaults]
#inventory = /etc/ansible/hosts #主机列表配置文件
#library = /usr/share/my_modules/ #库文件存放目录
#remote_tmp = ~/.ansible/tmp #临时py命令文件存放在远程主机目录
#local_tmp = ~/.ansible/tmp #本机的临时命令执行目录
#forks = 5 #默认的并发数
#sudo_user = root #默认sudo用户
#ask_sudo_pass = True
#ask_pass = True #每次执行ansible命令是否询问ssh密码
#remote_port = 22 #目标主机端口默认22
#host_key_checking = False #检查对应服务器的host_key
#log_path = /var/log/ansible.log #日志文件
#module_name = command #默认使用模块

以上为ansible的配置文件,一般保持默认无需改变,但建议将以下配置做修改(以下所有案例都基于这3项被修改的情况)

1
2
3
host_key_checking = False                           #此行注释去除,否则每次将检查主机的host_key
log_path = /var/log/ansible.log #将日志文件打开,方便查看操作日志
module_name = shell #将默认的模块改为shell,command模块功能太弱