Ansible教程一:批处理实战

本文详细介绍了Ansible这款自动化运维工具,包括其部署简单、使用SSH协议、丰富的模块库等特点。通过ad-hoc模式和playbook模式展示了如何执行任务,以及在实际环境中进行批量配置和升级。还分享了如何通过shell、copy和file模块进行文件操作,以及如何实现观测云应用的批量安装、配置和升级。最后,提到了免密登录的设置和常用模块的使用,提供了一整套的Ansible实践指南。
摘要由CSDN通过智能技术生成

软件简介

Ansible 是一款自动化运维工具,基于 Python 开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

目录

软件简介

功能特点

基础架构

任务执行

批处理实战

环境准备

软件安装

免密登录

常用模块

File 模块

观测云应用

批量配置

批量升级


功能特点

  1. 部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作

  2. 默认使用 SSH 协议对设备进行管理

  3. 有大量常规运维操作模块,可实现日常绝大部分操作

  4. 配置简单、功能强大、扩展性强

  5. 支持 API 及自定义模块,可通过 Python 轻松扩展

  6. 通过 Playbooks 来定制强大的配置、状态管理

基础架构

  • Ansible:Ansible 核心程序。

  • HostInventory:记录由 Ansible 管理的主机信息,包括端口、密码、ip 等。

  • Playbooks:YAML 格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。

  • CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。

  • CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

  • ConnectionPlugins:连接插件,Ansible 和 Host 通信使用

任务执行

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即 adhoc 和 playbook

  • ad-hoc 模式(点对点模式) 使用单个模块,支持批量执行单条命令。ad-hoc 命令是一种可以快速输入的命令,而且不需要保存起来的命令,就相当于 bash 中的一句 shell 命令。

  • playbook模式 (剧本模式) Ansible 主要管理方式,也是 Ansible 功能强大的关键所在。playbook 通过多个 task 集合完成一类功能,如 Web 服务的安装部署、数据库服务器的批量备份等。可以简单地把 playbook 理解为通过组合多条 ad-hoc 操作的配置文件。

批处理实战

环境准备

 

软件安装

登录 ansible01,执行安装命令

yum install -y ansible

  

主要程序

  • /usr/bin/ansible 主程序

  • /usr/bin/ansible-doc 配置文档

  • /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具

  • /usr/bin/ansible-pull 远程执行命令的工具

  • /usr/bin/ansible-vault 文件加密工具

主要配置文件

  • /etc/ansible/ansible.cfg 主配置文件

  • /etc/ansible/hosts 主机清单(将被管理的主机放到此文件)

  • /etc/ansible/roles/ 存放角色的目录

免密登录

登录 ansible01,生成秘钥,默认路径为 /root/.ssh/id_rsa、/root/.ssh/id_rsa.pub

ssh-keygen

  

秘钥分发至需要被管理的节点

ssh-copy-id root@10.0.0.66

ssh-copy-id root@10.0.0.67

  

修改主机清单文件 /etc/ansible/hosts,添加分组名称以及主机 ip

[guance]

10.0.0.67

10.0.0.66

验证连通性

ansible guance -m ping

 

常用模块

Shell 模块

Shell 模块可以在远程主机上调用 shell 解释器运行命令,支持 shell 的各种功能,例如管道等

  • 查看当前用户 id

ansible guance -m shell -a 'id'

 

  • 查看当前登录至系统的用户

ansible guance -m shell -a 'who'

 

Copy 模块

该模块用于将文件复制到远程主机,同时支持给定内容生成文件和修改权限等

  • 复制 ansible.cfg 文件至远程主机,并指定权限为 "读写" -rw-rw-rw-

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 模块

该模块用于设置文件的属性,比如创建文件、创建链接文件、删除文件等

  • 在 /tmp 下创建 app 目录

ansible guance -m file -a 'path=/tmp/app state=directory'

 

查看 /tmp 目录

ansible guance -m shell -a 'ls -l /tmp'

 

  • 删除之前从 ansible01 复制过来的 ansible.cfg 文件

ansible guance -m file -a 'path=/tmp/ansible.cfg state=absent'

 

Fetch 模块

该模块用于从远程某主机获取(复制)文件到本地

  • 拉取远程主机 /tmp/hello 文件至 /root 目录

ansible guance -m fetch -a 'src=/tmp/hello dest=/root'

 

在 /root 目录下,可以看到两个新目录 (远程主机 ip 为目录名称)

yum -y install 

treetree /root

 

观测云应用

批量安装

使用 shell 模块安装 datakit (注意修改对应的 token)

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'

 

批量配置

  • 开启 netstat 插件

使用 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 versioncheck
     shell: datakit--version|grep -i upgrade|wc -l
     register:version
   -name: dkupgradewhen: version.stdout >"0"
     shell: DK_UPGRADE=1bash -c"$(curl -L 
     https://static.guance.com/datakit/install.sh)"

运行 playbook

ansible-playbook /etc/ansible/dk_upgrade.yaml

 

查看 datakit 版本已经为最新

ansibleguance -m shell -a'datakit --version'

 

添加定时任务 crontab -e (每天 02 点 02 分执行批量升级)

02 02* ** ansible-playbook /etc/ansible/dk_upgrade.yaml

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快撑死的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值