前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化运维管理工Ansible安装与配置

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

作者头像
星哥玩云
发布2022-07-19 16:19:03
8300
发布2022-07-19 16:19:03
举报
文章被收录于专栏:开源部署

一、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

代码语言:javascript
复制
/etc/ansible/
├── ansible.cfg   //主配置文件
├── hosts         //管控主机文件
└── roles        //角色目录
自动化运维管理工Ansible安装与配置
自动化运维管理工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安装与配置

三、Ansible应用命令模块

3.1、ansible命令格式

  • 命令格式:ansible [主机] [-m 模块] [-a args]
  • ansible-doc -l //列出所有已安装的模块 注:按q退出
  • ansible-doc -s user //-s列出user模块描述信息和操作动作
自动化运维管理工Ansible安装与配置
自动化运维管理工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安装与配置
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Ansible概述
    • Ansible
    • 二、安装部署Ansible服务
      • 2.1、安装部署Ansible
        • 2.2、配置主机清单
          • 2.3、利用SSH实现登录
          • 三、Ansible应用命令模块
            • 3.1、ansible命令格式
              • 3.2、command模块
                • 3.2、cron模块
                  • 3.3、user模块
                    • 3.4、group模块
                      • 3.5、copy模块
                        • 3.6、file模块
                          • 3.7、ping模块
                            • 3.8、yum模块
                              • 3.9、service模块
                                • 3.10、shell模块
                                  • 3.11、script模块
                                    • 3.12、setup模块
                                    相关产品与服务
                                    云数据库 SQL Server
                                    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档