软件简介
Ansible 是一款自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
功能特点
- 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作
- 默认使用 SSH 协议对设备进行管理
- 有大量常规运维操作模块,可实现日常绝大部分操作
- 配置简单、功能强大、扩展性强
- 支持 API 及自定义模块,可通过 Python 轻松扩展
- 通过 Playbooks 来定制强大的配置、状态管理
基础架构
任务执行
Ansible 系统由控制主机对被管节点的操作方式可分为两类,即 adhoc 和 playbook
批处理实战
环境准备
IP |
系统 |
主机名 |
描述 |
10.0.0.65 |
CentOS 7.8 |
ansible01 |
ansible 管理节点 (已经安装 dk) |
10.0.0.66 |
CentOS 7.8 |
ansible02 |
被管理节点1 |
10.0.0.67 |
CentOS 7.8 |
ansible03 |
被管理节点2 |
软件安装
登录 ansible01,执行安装命令
yum install -y ansible
主要程序
主要配置文件
免密登录
登录 ansible01,生成秘钥,默认路径为 /root/.ssh/id_rsa、/root/.ssh/id_rsa.pub
ssh-keygen
秘钥分发至需要被管理的节点
ssh-copy-id root@10.0.0.66ssh-copy-id root@10.0.0.67
修改主机清单文件 /etc/ansible/hosts,添加分组名称以及主机 ip
[guance]10.0.0.6710.0.0.66
验证连通性
ansible guance -m ping
常用模块
Shell 模块
Shell 模块可以在远程主机上调用 shell 解释器运行命令,支持 shell 的各种功能,例如管道等
ansible guance -m shell -a 'id'
ansible guance -m shell -a 'who'
Copy 模块
该模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等
ansible guance -m copy -a 'src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg mode=666'
查看远程主机 ansible.cfg 文件
ansible guance -m shell -a 'ls -l /tmp/ansible.cfg'
ansible guance -m copy -a 'content="hello world" dest=/tmp/hello mode=666'
查看远程主机文件
ansible guance -m shell -a 'cat /tmp/hello'
File 模块
该模块用于设置文件的属性,比如创建文件、创建链接文件、删除文件等
ansible guance -m file -a 'path=/tmp/app state=directory'
查看 /tmp 目录
ansible guance -m shell -a 'ls -l /tmp'
ansible guance -m file -a 'path=/tmp/ansible.cfg state=absent'
Fetch 模块
该模块用于从远程某主机获取(复制)文件到本地
ansible guance -m fetch -a 'src=/tmp/hello dest=/root'
在 /root 目录下,可以看到两个新目录 (远程主机 ip 为目录名称)
yum -y install treetree /root
观测云应用
批量安装
使用 shell 模块安装 datakit (注意修改对应的 token,token 可在观测云-获取,参考链接:
https://docs.guance.com/management/space-management/)
ansible guance -m shell -a 'DK_DATAWAY="https://openway.guance.com?token=token" bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"'
查看进程是否已经启动
ansible guance -m shell -a 'ps -ef|grep datakit|grep -v grep'
批量配置
使用 shell 模块复制文件 netstat.conf.sample 为 netstat.conf
ansible guance -m shell -a 'cp /usr/local/datakit/conf.d/host/netstat.conf.sample /usr/local/datakit/conf.d/host/netstat.conf'
批量重启 datakit
ansible guance -m shell -a 'systemctl restart datakit'
批量升级
新建 datakit 升级 yaml 文件,
/etc/ansible/dk_upgrade.yaml
- hosts: guance remote_user: root tasks: - name: dk version check shell: datakit --version|grep -i upgrade|wc -l register: version - name: dk upgrade when: version.stdout > "0" shell: DK_UPGRADE=1 bash -c "$(curl -L https://static.guance.com/datakit/install.sh)"
运行 playbook
ansible-playbook /etc/ansible/dk_upgrade.yaml
查看 datakit 版本已经为最新
ansible guance -m shell -a 'datakit --version'
添加定时任务 crontab -e (每天 02 点 02 分执行批量升级)
02 02 * * * ansible-playbook /etc/ansible/dk_upgrade.yaml
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!