阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

自动化运维管理工Ansible安装与配置

143次阅读
没有评论

共计 5325 个字符,预计需要花费 14 分钟才能阅读完成。

一、Ansible 概述

  • 互联网的快速发展导致产品更新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式。
  • 自动化运维工具划分为两类:
  • 一是需要使用代理工具的,也就是基于 agent 程序来实现管理功能,例如 puppet、func、zabbix 等
  • 二是不需要代理配置工具的,可以直接基于 SSH 服务来完成管理功能,如 ansible,fabric 等。

  • 自动化运维工具比较:
工具 开发语言 结构 配置文件格式 运行任务
Ansible Python YAML 支持命令行
SaltStack Python C/S YAML 支持命令行
Puppet Ruby C/S Ruby 语法格式 通过模块实现

Ansible

  • Ansible 基于 Python 开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。默认通过 SSH 协议进行远程命令执行或下发配置,无需任何客户端代理软件,从而使得自动化环境部署变得简单,同时支持多台主机并行管理,使得管理主机更加便携。

二、安装部署 Ansible 服务

  • ansible 自动化运维环境有控制主机与被管理主机组成,由于 ansible 是基于 SSH 协议进行通信的,所以控制主机安装 ansible 软件后不需要重启或者运行任何程序,被管理主机也不需要安装或者运行任何代理程序。

2.1、安装部署 Ansible

服务器 IP 地址 操作系统 组名
控制主机 192.168.144.112 CentOS7.3 x86_64
被控制主机 1 192.168.144.111 centos7.3 x86_64 webserver
被控制主机 2 192.168.144.114 centos7.3 x86_64 mysql
  • 1)配置 yum 源

yum install epel-release

  • 2)安装 ansible

yum install ansible -y
yum install tree -y

  • 3)安装完成后,利用 tree 命令查看配置文件结构。

tree /etc/ansible

/etc/ansible/
├── ansible.cfg   // 主配置文件
├── hosts         // 管控主机文件
└── roles        // 角色目录

自动化运维管理工 Ansible 安装与配置

2.2、配置主机清单

vim /etc/ansible/hosts

[webserver]      // 主机分类组名
192.168.144.111  // 主机 IP 地址或者是域名

[mysql]
192.168.144.114

2.3、利用 SSH 实现登录

  • 控制服务器上操作,为了避免 ansible 下发指令时输入被管理主机的密码,需要使用 SSH 证书签名达到免密登录效果。使用 ssh-keygen 产生一对密匙,使用 ssh-copy-id 来下发公匙。

ssh-keygen -t rsa
ssh-copy-id root@192.168.144.111 // 发送公匙给被控服务器
ssh-copy-id root@192.168.144.114

  • 当被控制服务器接收到公匙后,实际已经可以通过 ansible 进行命令控制,只是,存在每次都需要输入私钥密码交互式验证较为麻烦,因此需要设置免交互代理。

ssh-agent bash
ssh-add // 输入私钥密码即可

自动化运维管理工 Ansible 安装与配置

三、Ansible 应用命令模块

3.1、ansible 命令格式

  • 命令格式:ansible [主机] [-m 模块] [-a args]
  • ansible-doc -l // 列出所有已安装的模块 注:按 q 退出
  • ansible-doc -s user //- s 列出 user 模块描述信息和操作动作

自动化运维管理工 Ansible 安装与配置

3.2、command 模块

  • Ansible 管理工具默认模块,若省略 -m command,ansible 默认使用 command 的模块

ansible 192.168.144.111 -m command -a ‘date’ // 指定 ip 执行 date
ansible webserver -m command -a ‘date’ // 指定分类执行 date
ansible mysql -m command -a ‘date’
ansible all -m command -a ‘date’ // 所有 hosts 主机执行 date 命令
ansible all -a ‘ls -l /’ 如果不加 - m 模块,则默认运行 command 模块

3.2、cron 模块

  • 两种状态,present 表示添加,默认状态,absent 表示移除

ansible-doc -s cron // 查看 cron 模块信息
ansible webserver -m cron -a ‘minute=”*/1″ job=”/bin/echo heihei” name=”test cron job”‘

ansible webserver -m cron -a ‘hour=”23″ job=”/bin/echo heihei” name=”test cron job”‘    // 每天 23 点执行,若想每隔 23 个小时执行需要改成 hour=”*/23″
ansible webserver -m cron -a ‘weekday=”6″ job=”/bin/echo heihei” name=”test cron job”‘

ansible-doc -s cron  // 结合查看详细用法

ansible webserver -a ‘crontab -l’
ansible webserver -m cron -a ‘name=”test cron job” state=absent’ // 移除计划任务,假如该计划任务没有取名字,name=None 即可

3.3、user 模块

  • 用于创建新用户,更改删除已存在用户,name 选项用于指定用户名称。
  • user 模块是请求的是 useradd, userdel, usermod 三个指令
  • 可指定新建用户的 uid,group 所属组

ansible webserver -m user -a ‘name=”test1″‘
ansible webserver -m user -a ‘name=”test2″ shell=/sbin/nologin’ // 添加用户指定 shell 登录方式
ansible webserver -m command -a ‘tail /etc/passwd’ // 查看用户
ansible webserver -m user -a ‘name=”test1″ state=absent’ // 删除用户 test01

3.4、group 模块

  • 针对用户的组进行管理,请求 groupadd、groupdel、groupmod 三个指令

ansible-doc -s group // 查看 group 模块帮助文档
ansible mysql -m group -a ‘name=mysql gid=306 system=yes’ // 创建 mysql 组,指定 gid,设置为系统组
ansible mysql -a ‘tail /etc/group’
ansible mysql -m user -a ‘name=test01 uid=306 system=yes group=mysql’ // 使用 user 模块添加用户,并添加到 mysql 组
ansible mysql -a ‘tail /etc/passwd’
ansible mysql -a ‘id test01’

3.5、copy 模块

  • 用于实现文件复制和批量文件下发,src 用来定义文件源路径,dest 定义被管理主机的文件路径,owner 指定属主,group 指定属组,mode 指定文件权限。

ansible-doc -s copy
ansible mysql -m copy -a ‘dest=/opt/123.txt content=”heihei” owner=test01 group=test01 mode=600’ // 新建文件且指定内容
ansible mysql -a ‘ls -l /opt’
ansible mysql -m copy -a ‘src=/etc/fstab dest=/opt/fstab.back owner=root mode=640’ // 复制文件

3.6、file 模块

  • 在 ansible 中使用 file 模块来设置文件属性,其中使用 path 指定文件路径,使用 src 定义源文件路径,使用 name 或者 dest 来替换创建文件的软链接。

ansible-doc -s file
ansible mysql -m file -a ‘owner=root group=root mode=755 path=/opt/123.txt’ // 更改文件的属主属组
ansible mysql -m file -a ‘src=/opt/123.txt dest=/opt/123.txt.bk state=link’ // 创建软连接
ansible mysql -m file -a ‘path=/opt/test.txt state=touch’ // 新建一个空文件,若需要指定内容需要 copy 模块,content 指定内容

3.7、ping 模块

  • 在 ansible 中使用 ping 模块来检测指定主机的连通性。

ansible all -m ping

3.8、yum 模块

  • 负责在被管理的主机上安装与卸载软件包,但是需要前提在每个节点配置自己的 yum 仓库,其中 name 指定软件包名称,state=absent 为选择卸载软件包。

ansible-doc -s yum
ansible mysql -m yum -a ‘name=httpd’
ansible mysql -m yum -a ‘name=httpd state=absent’
ansible mysql -m command -a ‘rpm -q httpd’

3.9、service 模块

  • 控制服务的运行状态,enabled 表示打开开机自启动,取值为 true 或者 false,使用 name 定义服务名称,使用 state 指定服务状态,取值为 started、stopped、restarted.(此处注意很多参数后有 ed, 注意 stopped)

ansible-doc -s service
ansible mysql -m service -a ‘name=httpd enabled=true state=started’ // 设置 httpd 开启自启动,且状态为开启
ansible mysql -m command -a ‘systemctl status httpd’

3.10、shell 模块

  • 用于创建用户无交互模式给用户设置密码。

ansible-doc -s shell
ansible mysql -m shell -a ‘echo abc123 | passwd –stdin test’ // 为 test 用户创建面交互式密码

3.11、script 模块

  • 可以将本地脚本复制到被管理主机上进行运行,需要注意的是,使用相对路径指定脚本!!!

ansible-doc -s script
vi test.sh

#!/bin/bash
echo “hello ansible from script”> /opt/script.txt

chmod +x test.sh
ansible mysql -m script -a ‘test.sh’

3.12、setup 模块

  • 查看被管理主机的 facts(facts 是 ansible 采集被管理主机设备信息的一个功能)每个被管理主机在接受并运行管理命令之前,都会将自己的相关信息(操作系统版本 IP 地址等)发送给控制主机。

ansible-doc -s setup
ansible mysql -m setup

自动化运维管理工 Ansible 安装与配置

下面关于 Ansible 的文章您也可能喜欢,不妨参考下:

使用 Ansible 批量管理远程服务器  https://www.linuxidc.com/Linux/2015-05/118080.htm
在 CentOS 7 中安装并使用自动化工具 Ansible  https://www.linuxidc.com/Linux/2015-10/123801.htm
CentOS 7 上搭建 Jenkins+Ansible 服务  https://www.linuxidc.com/Linux/2016-12/138737.htm
Linux 下源码编译安装 Ansible 及排错记录  https://www.linuxidc.com/Linux/2017-03/141427.htm
Ansible 基础—安装与常用模块  https://www.linuxidc.com/Linux/2017-02/140216.htm
Ansible 配置及使用  https://www.linuxidc.com/Linux/2017-03/142121.htm
自动化运维工具 Ansible 使用教程 https://www.linuxidc.com/Linux/2017-12/149671.htm
自动化运维工具之 Ansible 介绍及安装使用  https://www.linuxidc.com/Linux/2016-12/138104.htm
自动化运维之 Ansible 详解  https://www.linuxidc.com/Linux/2017-03/142191.htm
Ansible 入门 notify 和 handlers  https://www.linuxidc.com/Linux/2017-02/140871.htm
CentOS 6.5 安装自动化工具 Ansible 和图形化工具 Tower  https://www.linuxidc.com/Linux/2017-03/141422.htm

Ansible 的详细介绍:请点这里
Ansible 的下载地址:请点这里

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计5325字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中