Ansible安装
Ansible支持多平台多种安装方式,如Linux、Mac平台,支持源码安装、Yum安装、pip安装等
源码安装
$ git clone git://github.com/ansible/ansible.git --recursive$ cd ./ansible$ source ./hacking/env-setup$ . ./hacking/env-setup.fish$ source ./hacking/env-setup -q# 如果没有安装pip, 请先安装对应于你的Python版本的pip$ sudo easy_install pip# 以下的Python模块也需要安装$ sudo pip install paramiko PyYAML Jinja2 httplib2 six# 测试一条ping命令$ ansible all -m ping --ask-pass
注意,当更新ansible版本时,不只要更新git的源码树,也要更新git中指向Ansible自身模块的 “submodules” (不是同一种模块)
$ git pull --rebase$ git submodule update --init --recursive
yum安装
通过Yum安装RPMs适用于 EPEL 6, 7, 以及仍在支持中的Fedora发行版.
Fedora 用户可直接安装Ansible, 但RHEL或CentOS用户,需要 配置 EPEL
$ sudo yum install ansible
pip安装
$ sudo easy_install pip$ 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
[defaults]inventory = ./host/ #这个参数表示资源清单inventory文件的位置library = /usr/share/my_modules/ #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以remote_tmp = /$HOME/.ansible/tmp #执行过程中远程存放执行脚本的临时目录local_tmp = $HOME/.ansible/tmp #执行过程中本地存放执行脚本的临时目录forks = 20 #并发连接数,默认为5poll_interval = 150 #默认轮询时间间隔(单位秒)sudo_user = root #默认sudo用户ask_sudo_pass = True #是否需要sudo密码ask_pass = True #是否需要密码transport = smart #传输方式remote_port = 22 #默认远程主机的端口号module_lang = zh_CN.UTF-8module_set_locale = True建议开启修改以下两个配置参数(取消掉注释即可)host_key_checking = False #远程连接时忽略know_hostslog_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'
