Ansible安装

Ansible支持多平台多种安装方式,如Linux、Mac平台,支持源码安装、Yum安装、pip安装等

源码安装
  1. $ git clone git://github.com/ansible/ansible.git --recursive
  2. $ cd ./ansible
  3. $ source ./hacking/env-setup
  4. $ . ./hacking/env-setup.fish
  5. $ source ./hacking/env-setup -q
  6. # 如果没有安装pip, 请先安装对应于你的Python版本的pip
  7. $ sudo easy_install pip
  8. # 以下的Python模块也需要安装
  9. $ sudo pip install paramiko PyYAML Jinja2 httplib2 six
  10. # 测试一条ping命令
  11. $ ansible all -m ping --ask-pass

注意,当更新ansible版本时,不只要更新git的源码树,也要更新git中指向Ansible自身模块的 “submodules” (不是同一种模块)

  1. $ git pull --rebase
  2. $ git submodule update --init --recursive

yum安装

通过Yum安装RPMs适用于 EPEL 6, 7, 以及仍在支持中的Fedora发行版.

Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要 配置 EPEL

  1. $ sudo yum install ansible

pip安装
  1. $ sudo easy_install pip
  2. $ sudo pip install ansible

Ansible目录结构

Yum安装完成后,默认目录结构如下

  • 配置文件目录:/etc/ansible/
  • 执行文件目录:/usr/bin/
  • Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
  • Help文档目录:/usr/share/doc/ansible-X.X.X/
  • Man文档目录:/usr/share/man/man1/

配置文件介绍

Ansible配置文件查找顺序

ansible查找配置文件的顺序与其他服务不尽相同,按照下面方式进行查找:

1、检查环境变量ANSIBLE_CONFIG执行的路径(export ANSIBLE_CONFIG=/etc/ansible.cfg)

2、~/ansible.cfg,检查当前目录下的ansible.cfg配置文件

3、/etc/ansible.cfg检查etc目录的配置文件

Ansible配置文件介绍

ansible 的配置文件为/etc/ansible/ansible.cfg

  1. [defaults]
  2. inventory = ./host/ #这个参数表示资源清单inventory文件的位置
  3. library = /usr/share/my_modules/ #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
  4. remote_tmp = /$HOME/.ansible/tmp #执行过程中远程存放执行脚本的临时目录
  5. local_tmp = $HOME/.ansible/tmp #执行过程中本地存放执行脚本的临时目录
  6. forks = 20 #并发连接数,默认为5
  7. poll_interval = 150 #默认轮询时间间隔(单位秒)
  8. sudo_user = root #默认sudo用户
  9. ask_sudo_pass = True #是否需要sudo密码
  10. ask_pass = True #是否需要密码
  11. transport = smart #传输方式
  12. remote_port = 22 #默认远程主机的端口号
  13. module_lang = zh_CN.UTF-8
  14. module_set_locale = True
  15. 建议开启修改以下两个配置参数(取消掉注释即可)
  16. host_key_checking = False #远程连接时忽略know_hosts
  17. log_path=/var/log/ansible.log #开启ansible日志

inventory主机清单

主机清单的默认配置文件为/etc/ansible/hosts

inventory文件遵循ini文件风格,中括号中的字符为组名,可以将同一个主机同时归并到不同的组中。

$ vim ./host/serverlist
#前置
[frontserver]  # 主机组
10.21.17.195:22022  # 使用了非默认SSH端口 

#联机
[onlineserver]
10.21.17.203

#db
[dbserver]
www.larryyu.com   # 支持主机名模式

# 后管
[manager]
manager-[a:f].example.com   # 支持通配符

[serverlist:children]  # 定义一个大组包含很多小主机组
frontserver
onlineserver
dbserver

[all:vars]   # 定义公共参数
ansible_ssh_user='app'
ansible_ssh_pass='12345'
ansible_su_pass='uiop7890'