文章目录
一、python环境准备
Ansible是基于Python开发的,所以推荐Python2.7及以上版本
1. 脚本安装python3.7.5
tar -xf python3.7.5_install_v2.tar.gz
./python3.7.5_install/python375_install.sh
2. 安装依赖
- yum在线安装
yum -y install python-devel openssl-devel libffi-devel sshpass
- 下载,离线安装
mkdir depend_soft
yum -y install $soft_name --downloadonly --downloaddir=depend_soft/
yum -y install depend_soft/*.rpm
3. 安装py模块
模块:setuptools、pycrypto、PyYAML、MarkupSafe、Jinja2、ecdsa、cryptography、paramiko、simplejson
mkdir py_module
cd py_module/
pip375 install --upgrade pip
pip375 download $module_name
pip375 install ./*.whl && pip375 install ./*.tar.gz
二、解压安装ansible,初始化配置
1. 解包
ansible包下载: https://releases.ansible.com/ansible/
tar -xf ansible-2.9.9.tar.gz
2.安装ansible
cd ansible-2.9.9/
python375 setup.py build
python375 setup.py install
3. 初始化配置
mkdir /etc/ansible
cp examples/ansible.cfg examples/hosts /etc/ansible/
4. 配置ansible软链接:ansible、ansible-doc、ansible-playbook
ln -s /usr/local/python375/bin/ansible /usr/local/sbin/ansible
ln -s /usr/local/python375/bin/ansible-doc /usr/local/sbin/ansible-doc
ln -s /usr/local/python375/bin/ansible-playbook /usr/local/sbin/ansible-playbook
三、ansible配置,简单使用
- 管理主机: 172.16.10.11
- web1/db1:172.16.10.12
- db2: 172.16.10.13
1. 主机名映射(域名解析)
vim /etc/hosts
172.16.10.12 db01 slb01
172.16.10.13 slb02
2. 修改ansible配置
- ansible.cfg配置
vim /etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts #定义主机组文件
host_key_checking = False #登录免‘yes’验证
- hosts配置
vim /etc/ansible/hosts
[db]
db01 # 方式1: 单台主机
[slb]
slb[01:02] # 方式2: 连续主机
[nginx]
172.16.10.12 # 方式3: ip,连续ip
172.16.10.13
172.16.10.[12:13]
[web]
db01 ansible_ssh_port=222 ansible_ssh_user=cdn ansible_ssh_pass=xxx
# 当默认ssh用户改变时,可加的参数
[chengdu:children] # children包含组
web
slb
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/ansible"
# 密钥对方式登录验证(免密)
3. 简单使用
- 查看slb主机组包含的主机
ansible slb --list-hosts
ansible chengdu --list-hosts
ansible all --list-hosts
- 命令行批量操作:
ansible 主机组/主机 -m 模块(默认command) -a 模块参数
常用模块:见下一章
- ping远端主机,调用ping模块
ansible all -m ping -k # -k交互式输入密码验证,且主机密码一样,不然单台执行
SSH password:
- df -h远端主机磁盘
ansible all [-m command] -a 'df -h' # 首次验证后,后面无需验证
ansible slb -m shell -a 'df -h' # 调用shell模块
ansible db01,db02 -m shell -a 'df -h'
- 密码验证不方便、不安全,建议使用:密钥对验证
# ssh-keygen 默认生成:id_rsa id_rsa.pub
ssh-keygen -t rsa -f /root/.ssh/ansible # ssh-keygen生成密钥对
# -f自定义名称,一路回车即可
ls /root/.ssh
ansible 私钥 ansible.pub 公钥
ssh-copy-id -i /root/.ssh/ansible.pub db01/slb01/slb02 # ssh-copy-id分发公钥
ssh root@172.16.10.12 -i /root/.ssh/ansible # ssh免密登录,因为名称不是默认,-i指定
vim /etc/ansible/hosts
... ...
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/ansible" # 指定所用私钥
# 测试,无需输入密码:
ansible all -m ping
ansible slb [-m command] -a 'df -h'
4. 自定义ansible配置,hosts文件
vim /opt/ansible.cfg
[defaults]
inventory = my_hosts
host_key_checking = False
vim /opt/my_hosts
[web]
172.16.10.12
[db]
172.16.10.13
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/ansible"
cd /opt
ansible all -m ping # 成功
# 不 cd /opt/,执行ansible批量操作
默认应用的是:/etc/ansible/....