自动化工具-ansible服务部署与使用

wenwei-blog      2022-02-10     354

关键词:

1.前言

1.1ansible软件介绍

python 语言是运维人员必须会的语言
ansible 是一个基于python 开发的自动化运维工具
其功能实现基于ssh远程连接服务
ansible 可以实现批量系统配置,批量软件部署,批量文件拷贝,批量运行命令等功能
除了ansible之外,还有saltstack 等批量管理软件

1.2ansible软件特点:

不需要单独安装客户端(no agents),基于系统自带的sshd服务,sshd就相当于ansible的客户端
不需要服务端(no sever)
需要依靠大量的模块实现批量管理
配置文件 /etc/ansible/ansible.cfg (前期不用配置)

1.3ansible服务端和被控端环境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 
ansible被控端:
192.168.10.144:
[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
192.168.10.143:
[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

2.实现基于秘钥连接:

生成ssh公钥秘钥对:
ssh-keygen -t rsa -P ‘‘
拷贝公钥到被控端的服务器:
ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
基于秘钥登录测试:
Last login: Sat May 19 15:44:50 2018 from 192.168.10.143

3.安装ansible和配置主机组

3.1安装:

使用epel的源安装,epel源安装:yum install -y epel-release
yum install -y ansible --enablerepo=epel

3.2配置ansible主机组

vim /etc/ansible/hosts
[web] #主机组
192.168.10.144 ansible_ssh_user=root ansible_ssh_pass=123 #主机的用户名和密码,如果不是公钥验证,也可以尝试密码连接
192.168.10.145
[mysql]
47.94.20.198

4.ansible软件使用/参数

语法:
ansible clsn -a "uptime"
ansible clsn -m command -a "uptime"
ansible 定义的组/单个ip/域名/all  -m command -a "uptime"
说明:-m 指定使用的模块
      -a 指定使用模块中相应的命令参数  命令参数只能是基本命令,并不支持管道操作
      all   为hosts文件中的组全部管理

5.ansible常用模块

5.1 command模块

常用选项:
creates:判断,当该文件存在时,则该命令不执行
free_form:需要执行的Linux指令
chdir:在执行命令之前,先切换到该指定的目录
removes:判断,当该文件不存在时,则该选项不执行
executable:切换shell来执行命令,该执行路径必须是一个绝对路径
[[email protected] ansible]# ansible web -a ‘chdir=/home ls‘
192.168.10.145 | SUCCESS | rc=0 >>
192.168.10.144 | SUCCESS | rc=0 >>
abc1
abc2
abc3

 

5.2File模块

常用选项:
force:在两种情况下强制创建软链接。1、源文件不存在但之后会建立的情况;2、目标软件已存在,需要先取消之前的软链接,然后创建新的软链接。选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
path:必选项,定义文件/目录的路径
recurse:递归的设置文件的属性,只对目录有效
src:要被链接到的路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:
  • directory:如果目录不存在,创建目录
  • file:即使文件不存在,也不会被创建
  • link:创建软链接;hard:创建硬链接
  • touch:如果文件不存在,则会创建一个新的文件,如果已存在,则更新其最后修改时间
  • absent:删除目录/文件或者取消链接文件
[[email protected] ~]# ansible web -m file -a ‘path=/tmp/test.txt state=touch‘
192.168.10.145 | SUCCESS => {
"changed": true,
"dest": "/tmp/test.txt",
"gid": 0,
"group": "root",
"mode": "0644",
"owner": "root",
"size": 0,
"state": "file",
"uid": 0
}
192.168.10.144 | SUCCESS => {
"changed": true,
"dest": "/tmp/test.txt",
"gid": 0,
"group": "root",
"mode": "0644",
"owner": "root",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"size": 0,
"state": "file",
"uid": 0
 
[[email protected] ~]# ansible web -m file -a ‘path=/tmp/test_dir state=directory owner=root group=root mode=777‘
192.168.10.145 | SUCCESS => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "0777",
"owner": "root",
"path": "/tmp/test_dir",
"size": 6,
"state": "directory",
"uid": 0
}
192.168.10.144 | SUCCESS => {
"changed": true,
"gid": 0,
"group": "root",
"mode": "0777",
"owner": "root",
"path": "/tmp/test_dir",
"secontext": "unconfined_u:object_r:user_tmp_t:s0",
"size": 6,
"state": "directory",
"uid": 0
}
 
5.3 Service模块用于管理服务
常用选项:
arguments:为命令提供一些附加参数
enabled:是否开机启动,选项 yes|no
name:必选项,服务名称
pattern:定义一个模式,如果通过status指令来查看服务状态时,没有响应,它会通过ps命令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然运行
runlevel:运行级别
sleep:如果执行了restarted,则在stop和start之间等待几秒钟
state:对当前服务执行启动/停止/重启/重新加载等操作(started/stopped/restarted/reloaded)
[email protected] ~]# ansible web -m service -a "name=postfix state=started enabled=yes"

5.4 cron模块 用于管理计划任务

常用参数:
backup:对远程主机上的原计划任务内容修改之前做备份
cron_file:如果指定该选项,则用该文件替换远程主机上cron.d目录下的用户的任务计划
day:日(1-31,*,*/2,…)
hour:小时(0-23,*,*/2,…)
minute:分钟(0-59,*,*/2,…)
month:月(0-12,*,…)
weekday:周(0-7,*,…)
job:要执行的任务,依赖于state=present
name:该任务的描述
special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly
state:确认该任务计划是创建还是删除
user:以哪个用户身份执行
 
添加定时任务:
ansible web -s cron -a "minute=0 hour=3 job=‘/bin/sh /mnt/shell/hostname.sh‘ name=check hostname"

5.5 yum模块 使用yum包管理器来管理软件包

选项:
conf_file:yum的配置文件
disable_gpg_check:关闭gpg_check
disablerepo:不启用某个源
enablerepo:启用某个源
list:查看yum列表
name:要进行操作的软件包名字,也可以传递一个url或者一个本地的rpm包的路径
state:状态(present/installed/absent/removed/latest)
yum安装软件:
 ansible web -m yum -a ‘name=libselinux-python state=installed‘

yum卸载软件:

[[email protected] ~]# ansible web -m yum -a ‘name=lrzsz state=removed‘
192.168.10.145 | SUCCESS => {
"changed": false,
"msg": "",
"rc": 0,
"results": [
"lrzsz is not installed"
]
}
192.168.10.144 | SUCCESS => {
"changed": true,
"msg": "",
"rc": 0,
"results": [
"已加载插件:fastestmirror, langpacks
正在解决依赖关系
--> 正在检查事务
---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 删除
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package 架构 版本 源 大小
================================================================================
正在删除:
 lrzsz x86_64 0.12.20-36.el7 @base 181 k

事务概要
================================================================================
移除 1 软件包

安装大小:181 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
 正在删除 : lrzsz-0.12.20-36.el7.x86_64 1/1 
 验证中 : lrzsz-0.12.20-36.el7.x86_64 1/1 

删除:
 lrzsz.x86_64 0:0.12.20-36.el7 

完毕!
"
]
}

 


 

 

自动化运维工具--ansible(安装部署模块简介与操作)(代码片段)

...新换代速度加快,按照传统维护操作使得工作效率低下,自动化运维以尽可能安全高效的完成工作为目的,实现代替传统工作方式。自动化运维工具划分为两类:一是需要使用代理工具的,也就是基于agent程序来实现管理功能,... 查看详情

运维自动化之ansible的安装与使用(包括模块与playbook使用)

...西呢?官方的title是“AnsibleisSimpleITAutomation”——简单的自动化IT运维管理工具。这个工具的目标有这么几项:让我们自动化部署APP;自动化管理配置项;自动化的持续交付;自动化的(AWS)云服务管理。基于Python开发,可实现... 查看详情

ansible服务的部署与使用(代码片段)

 简介:   ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。   ansible是基于模块工作... 查看详情

ansible自动化运维工具安装与使用实例

1.准备两台服务器,要确定网络是通的。服务器当然越多越好啦。。。。Ansible的简介和好处我就不多说了,自己看百科去(*?▽?*)IP:192.168.139.100IP:192.168.139.1102.把192.168.139.100这台服务器当master,110这台服务器做slave。在master服务器上... 查看详情

ansible自动化运维管理工具的概述与部署(代码片段)

Ansible自动化运维管理工具的概述与部署项目总体思路一、Ansible概述二、ansible环境安装部署三、ansible命令行模块1.command模块2.shell模块3.cron模块4.user模块5.group模块6.copy模块7.file模块8.hostname模块9.ping模块10.yum模块11.service/systemd模... 查看详情

ansible自动化运维管理工具的概述与部署(代码片段)

Ansible自动化运维管理工具的概述与部署项目总体思路一、Ansible概述二、ansible环境安装部署三、ansible命令行模块1.command模块2.shell模块3.cron模块4.user模块5.group模块6.copy模块7.file模块8.hostname模块9.ping模块10.yum模块11.service/systemd模... 查看详情

ansible配置自动化工具安装及使用

一、运维自动化应用场景1.操作系统预备自动化2.配置自动化帮助企业在大量服务器存在的情况下,快速实现应用部署、软件配置等一大利器。优异方面:  提高配置效率  提高配置的准确性  降低人工参与度 3.监控自... 查看详情

01ansible简介与部署(代码片段)

Ansible简介AnsibleLogoAnsible概述Ansible是新兴的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。无需安装客户端。Ansible... 查看详情

ansible运维自动化--配置管理工具(代码片段)

Ansible的使用介绍:Ansible是为了更方便、快捷的进行配置管理。用Ansible可以将平常复杂的配置工作变得简单,更加标准化且更容易控制。Ansible可以实现100、1000台批量部署等。Ansible特点:(1)部署简单,只需在主控端部署Ansible... 查看详情

自动化运维之ansible-安装部署与基础命令篇(代码片段)

...署程序、配置系统等功能。二、安装部署Ansible服务Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或允许任何程序,被管理主机也不需要安装... 查看详情

部署自动化运维服务——ansible(代码片段)

...,仍旧按照传统方式进行维护会使得工作效率低下。部署自动化运维就成为了首先,自动化运维能够帮助工程师尽可能安全、高效的完成工作。自动化运维的工具一般分为两类:一类是需要使用代理工具,也就是基于专用的Agent... 查看详情

自动化运维之ansible的安装部署与命令模块(代码片段)

Ansible简介Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量... 查看详情

走进自动化运维之ansible服务部署,附带(参数及模块)详解!(代码片段)

何为Ansible:简单的自动化运维管理工具,不需要配置代理工具,基于Python研发。Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。自动化运维工具“三剑... 查看详情

ansible系统概述与部署(代码片段)

...:27:03tags:Ansiblecategories:Ansiblecopyright:true---Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,an 查看详情

运维自动化工具ansible(代码片段)

一、Ansible介绍Ansible简单的说是一个配置管理系统(configurationmanagementsystem)。你只需要可以使用ssh访问你的服务器或设备就行。它也不同于其他工具,因为它使用推送的方式,而不是像puppet等那样使用拉取安装agent的方式。你可以... 查看详情

自动化运维工具ansible(代码片段)

学习Ansible的系列文章Ansible介绍Ansible架构Ansible安装Ansible配置文件及参数Ansible常用模块Ansibleplaybook1.Ansible介绍Ansible是一个配置管理和应用部署工具,只需要通过ssh访问服务器或设备即可实现批量系统配置、程序部署、运行命令... 查看详情

使用ansible远程执行命令

...ansible的官方定义:“AnsibleisSimpleITAutomation”——简单的自动化IT工具。这个工具的目标:自动化部署APP自动化管理配置项自动化的持续交付自动化的(AWS)云服务管理。其本质上就是在远程在多台服务器执行一系列命令和文件同... 查看详情

ansible批量自动化管理工具(代码片段)

批量管理服务器的工具,无需部署代理,通过ssh进行管理,是python写的 ansible常用模块:(1)shell命令模块执行命令(2)copy模块批量下发文件或文件夹(3)script模块批量运行脚本 Python3与ansible的安装使用源码安装Python3.5#安装支持... 查看详情