2. Ansible 安装
目录
1. pip 方式安装
2. 源码库方式安装
3. Apt 方式安装
4. 配置运行环境
5. 查看 ansible 版本信息
6. 参考文章
1. pip 方式安装
0x01 安装 pip
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
ox02 安装 ansible
pip install ansible
[root@ansible etc]# ansible --version
ansible 2.8.0.dev0
config file = None
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible-2.8.0.dev0-py2.7.egg/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
此时,config file = /etc/ansible/ansible.cfg
这个目录文件都是没有的,需要动手去创建和安装。
注意:官网推荐使用 pip 方式安装
可参考官网的解释:
For other installation options, we recommend installing via “pip”, which is the Python package manager, though other options are also available.
2. 源码库方式安装
0x01 从GitHub提取 Ansible 源代码:
git clone https://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
如果像要安装过程中减少告警/错误信息输出,可以再安装时加上 -q
参数:
source ./hacking/env-setup -q
0x02 如果系统没有安装过 pip,先安装对应的 Python 版本的额 pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
0x03 安装 Ansible 控制主机需要的 Python 模块:
pip install -r ./requirements.txt
0x04 安装 Ansible
python setup.py install
0x05 当更新 Ansible 版本时,不但要更新 git 的源码树,还要更新 git 中指向 Ansible 自身的模块,成为 submodules:
git pull --rebase
git submodule update --init --recursive
0x06 一旦运行 env-setup 脚本,就意味着 Ansible 从源码中运行起来了。默认的资源清单 inventory 文件是 /etc/ansible/hosts,清单文件 inventory 可以指定其他位置:
echo "127.0.0.1" > ~/ansible_hosts
export ANSIBLE_INVENTORY=~/ansible_hosts
3. Apt 方式安装
0x01 添加 apt 源(/etc/apt/sources.list)
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
0x02 安装
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt-get update
$ sudo apt-get install ansible
4. 配置运行环境
Ansible 配置文件是以 ini 格式存储配置数据的,早 Ansible 中,几乎所有的配置项都可以通过 Ansible 的 playbook 或环境变量来重新赋值。
ANSIBLE_CONFIG
:首先,Ansible命令会检查环境变量,及这个环境变量将指向的配置文件。./ansible.cfg
:再次,将会检查在用软件包管理工具安装 Ansible 时自动产生的配置文件。/etc/ansible/ansible.cfg
:最后,将会检查在用软件管理工具安装 Ansible 时自动产生的配置文件。
注意:如果你通过操作系统软件包管理工具或pip安装,那么你在 /etc/ansible 目录下应该已经有了 ansible.cfg 配置文件;如果你是通过 GitHub 仓库安装的,在你复制的仓库中 examples 目录下可以找到 ansible.cfg,你可以把它拷贝到 /etc/ansible 目录下。
0x01 使用环境变量方式来配置
参数名称必须都是大写字母,如:
export ANSIBLE_SUDO_USER=root
设置环境变量后,ANSIBLE_SUDO_USER
就可以再 playbook 中直接引用。
0x02 设置 ansible.cfg配置参数
- inventory:表示自愿清单 inventory 文件的位置,资源清单就是一些 Ansible 需要连接管理的主机列表。默认参数为
inventory=/etc/ansible/hosts
- library:Ansible 的操作动作,无论是本地或远程,都是用一小段代码来执行,这小段代码成为模块,这个 library 参数指向 Ansible 模块的目录。默认参数:
library=/usr/share/ansible
,Ansible 支持多个目录方式,只要用冒号(:)隔开即可,同时也会检查当前执行 playbook 位置下的./library
目录。 - forks:设置默认情况下 Ansible 最多可能有多少个进程同时同坐,默认设置最多 5 个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管节点的数量来确定,可能是 50 或 100,默认参数:
forks=5
- sudo_user:默认执行命令的用户,可以在 playbook 中重新设置这个参数,配置:
sudo_user=root
- remote_port:指定连接被管节点的管理端口,默认是 22,除非设置了特殊的 SSH 端口,不然这个参数一般是不需要修改的。默认配置:
remote_port=22
- host_key_checking:设置是否检查 SSH 主机的密钥。可以设置为 True 或 False,默认设置:
host_key_checking=false
- timeout:设置 SSH 连接的超时时间,单位秒,默认配置:
timeout=60
- log_path:Ansible系统默认是不记录日志的,如果像把 Ansible 系统的输出记录到日志文件中,需要设置 log_path 来指定一个存储 Ansible 日志的文件。配置:
log_path=/var/log/ansible.log
。注意:执行 Ansible 的用户需要有写入日志的权限,模块将会调用被管节点的 syslog 来记录,口令是不会出现在日志中的。
0x03 使用公钥认证
出于安全的考虑,一般会采用密钥验证方式来登录。
如果有台被管理节点重新安装系统并在 known_hosts 中有了与之前不同的密钥信息,就会提示一个密钥不匹配的错误信息,直到被结症为止。在 使用 Ansible 时,如果有台被管节点没有在 know_hosts 中被初始化,将会在使用 Ansible 或定时执行 Ansible 时提示对 key 信息的确认。
如果不想出现这种情况,可修改 home 目录下 ~/.ansible.cfg
或 /etc/ansible/ansible.cfg
的配置项:
[defaults]
host_key_checking = False
或者直接在控制主机的操作系统中设置环境变量:
export ANSIBLE_HOST_KEY_CHECKING=False
0x04 配置 Linux 主机 SSH 免密码访问
通过使用 ssh-keygen
与 ssh-copy-id
来实现快速证书的生成及公钥下发,其中 ssh-keygen
生成一对密钥,使用 ssh-copy-id
来下发生成的公钥。
5. 查看 ansible 版本信息
[root@ansible etc]# ansible --version
ansible 2.8.0.dev0
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible-2.8.0.dev0-py2.7.egg/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
由版本信息可以看出如下内容:
ansible版本:ansible 2.8.0
ansible主配置文件所在目录: /etc/ansible/ansible.cfg
ansible的模块路径: /usr/lib/python2.7/site-packages/ansible-2.8.0.dev0-py2.7.egg/ansible
ansible可执行文件路径: /usr/bin/ansible
Python 版本信息: 2.7.5