已复制
全屏展示
复制代码

Ansible批量运维化工具总结


· 3 min read

一. 概要说明

Ansible是一个老牌的批量运维工具,它集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。它有如下优点:

  • Python语言
  • 无客户端,不使用时系统开销为0
  • 无服务器,直接运行命令
  • 不需要安装agent

二. 安装配置

ansible的安装包在epel仓库中,所有需要先安装epel-release。如下是实验环境说明。

  • 三台服务器master、slave1、slave2,在master上安装ansible
  • 当前登录用户为work,且有sudo免密操作权限。
  • 所有的操作都在master节点上进行。
# 配置hosts文件
sudo sh -c "cat << EOF >> /etc/hosts
172.16.1.110 master
172.16.1.120 slave1
172.16.1.130 slave2
EOF"


# 安装ansible
sudo yum install -y epel-release
sudo yum install -y ansible


# 修改配置
sudo sed -i '/host_key_checking = False/c\host_key_checking = False' /etc/ansible/ansible.cfg
sudo sed -i '/command_warnings = False/c\command_warnings = False' /etc/ansible/ansible.cfg


# 在当前目录下创建nodes.txt文件,文件内容为除本机外的所有的节点主机名
cat nodes.txt
slave1
slave2


# 添加ansible的hosts
sudo sed -i '$a\'"`hostname`"'\n[nodes]' /etc/ansible/hosts
sudo sed -i '$r nodes.txt' /etc/ansible/hosts


# 生成私钥公钥对
sudo yum install -y sshpass
ssh-keygen -f $HOME/.ssh/id_rsa -t rsa -N '' -q


# 远程创建用户work,配置密码,替换root登录密码123456,work用户密码123456
for host in `cat nodes.txt`; do sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@$host "useradd work"; done
for host in `cat nodes.txt`; do sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@$host "echo 123456 | passwd --stdin work"; done


# 配置nodes节点work用户sudo权限
for host in `cat nodes.txt`; do sshpass -p 123456 ssh -o StrictHostKeyChecking=no root@$host "sed -i -r '/root\s+ALL=\(ALL\)\s+ALL/a\work ALL=(ALL) NOPASSWD:ALL' /etc/sudoers"; done


# 配置work用户使用秘钥登录
for host in `cat nodes.txt` `hostname`; do sshpass -p 123456 ssh-copy-id -o StrictHostKeyChecking=no work@$host; done


# 测试ansible
ansible all -m ping
ansible all -m shell -a "ls /root" --become

三. 常用命令

ansible             # Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
ansible-doc         # Ansible 模块功能查看工具
ansible-galaxy      # 下载/上传优秀代码或Roles模块的官网平台,基于网络的
ansible-playbook    # Ansible 定制自动化的任务集编排工具
ansible-pull        # Ansible 远程执行命令的工具
ansible-vault       # Ansible 文件加密工具
ansible-console     # Ansible基于Linux Consoble界面可与用户交互的命令执行工具
  • ansible-doc
# 查看 shell 模块的文档
ansible-doc -s shell

四. 常用模块

ansible 命令使用--become来支持sudo执行。

  • command 执行简单命令行,不支持管道。
ansible all -m shell -a "sed -n '/root/p' /etc/passwd"
  • shell 执行shell命令行,支持管道等操作。
ansible all -m shell -a "cat /etc/passwd | grep root"
  • copy 如果文件内容相同不会复制,不同才会复制。注意:如果是复制目录,不会删除远程目录多余的文件。适合复制单文件。
ansible nodes -m copy -a "src=/etc/security/limits.conf dest=/etc/security/" --become
  • synchronize  同步文件,将yum.repos.d完全同步到远程。操作时要小心。
ansible nodes -m synchronize -a "src=/etc/yum.repos.d dest=/etc/ rsync_opts=--delete,--recursive=yes" --become
🔗

文章推荐