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.

What Version To Pick?


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-keygenssh-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


6. 参考文章

Installation Guide
Ansible自动化运维 技术与实践

posted @ 2018-12-03 10:21  McSiberiaWolf  阅读(774)  评论(1编辑  收藏  举报