Ansible-安装文档
安装
pip install ansible
mkdir /etc/ansible/
cd /etc/ansible/ && [ -f ansible.cfg ] || wget https://raw.github.com/ansible/ansible/devel/examples/ansible.cfg
# 可以查看配置文件路径、模块路径
ansible --version
配置
配置读取顺序:
- ansible.cfg (in the current directory)
- ~/.ansible.cfg (in the home directory)
- /etc/ansible/ansible.cfg
# /etc/ansible/ansible.cfg 添加以下参数,忽略添加known_hosts
[defaults]
host_key_checking = False
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no
主机列表
# vim /etc/ansible/hosts
1.1.1.1
[test]
1.1.1.2
1.1.1.3
测试主机列表
# 测试主机
[root@zaza-test ~]# ansible 1.1.1.1 --list-hosts
hosts (1):
1.1.1.1
# 测试主机组
[root@zaza-test ~]# ansible test --list-hosts
hosts (2):
1.1.1.2
1.1.1.3
常见操作
# 生成linux用户密码
pip install passlib
python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
# 查看 playbook 匹配的主机
ansible-playbook playbook_add_ansible.yml --list-hosts
# 查看 playbook 匹配的任务
ansible-playbook playbook_add_ansible.yml --list-tasks
# 密码登录执行
ansible-playbook playbook_add_ansible.yml -k
# 测试ansible是否成功(返回root代表成功)
# ssh-copy-id -i ~/.ssh/ansible ansible@1.1.1.1
ansible 1.1.1.1 -a 'whoami' -u ansible -b
# ansible-playbook --check
默认用户设置
实现不指定用户直接登录:ssh 192.168.1.1
# 修改默认登录用户(默认用户就是当前用户名)
(ansible) [root@ansible play]# vim /root/.ssh/config
Host *
User ansible
客户端创建ansible账号
# 客户端 ##
# 1、创建账号 ###
# 建议第一次初始化用root处理(单独生成ansible账号,后续用ansible处理)
# useradd -d /home/ansible -m ansible
useradd ansible && passwd ansible
passwd
which sudo >/dev/null 2>&1 || yum -y install sudo
[ ! -d "/etc/sudoers.d" ] && install -o root -g root -d -m 750 /etc/sudoers.d
grep "#includedir /etc/sudoers.d" /etc/sudoers > /dev/null || echo "#includedir /etc/sudoers.d" >> /etc/sudoers
echo "ansible ALL=(ALL) ALL" > /etc/sudoers.d/ansible && chmod 400 /etc/sudoers.d/ansible
# 测试
# -k, --ask-pass ask for connection password
# -K, --ask-become-pass
ansible all -a "id" -u ansible -k
ansible all -a "id" -u ansible -k -K --become
ansible all -a "id" -u ansible -k -K --become-user=root
安全控制
当主机被攻破后,用户任然无法通过ansible私钥登录,因为私钥包含密码
# 生成ansible的管理密钥(注意一定要加密密钥)
# playbook用的此文件名,不要修改文件名字
ssh-keygen -t rsa -b 2048 -C "ansible" -f ~/.ssh/ansible
# 登录ansible使用密钥流程(xhell的登录脚本选项实现自动登录)
ssh-agent bash
# 这里需要解密密钥(可以通过xhell的登录脚本选项实现自动登录,同时提升了ansible的安全性)
# 只有解密密钥后才能控制所有服务器(这个在xshell登录的时候实现,ansible本身不能直接登录)
ssh-add .ssh/ansible
- 原文作者:zaza
- 原文链接:https://zazayaya.github.io/2020/10/06/ansible-getting-started.html
- 说明:转载本站文章请标明出处,部分资源来源于网络,如有侵权请及时与我联系!