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

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]

基于秘钥登录测试:

[[email protected] ~]# ssh [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\n正在解决依赖关系\n--> 正在检查事务\n---> 软件包 lrzsz.x86_64.0.0.12.20-36.el7 将被 删除\n--> 解决依赖关系完成\n\n依赖关系解决\n\n================================================================================\n Package 架构 版本 源 大小\n================================================================================\n正在删除:\n lrzsz x86_64 0.12.20-36.el7 @base 181 k\n\n事务概要\n================================================================================\n移除 1 软件包\n\n安装大小:181 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n 正在删除 : lrzsz-0.12.20-36.el7.x86_64 1/1 \n 验证中 : lrzsz-0.12.20-36.el7.x86_64 1/1 \n\n删除:\n lrzsz.x86_64 0:0.12.20-36.el7 \n\n完毕!\n"
]
}

原文地址:https://www.cnblogs.com/wenwei-blog/p/9065040.html

时间: 2024-11-05 13:51:03

自动化工具-ansible服务部署与使用的相关文章

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具Ansible架构部署应用及playbooks简单应用

在日常服务器运维中,我们经常要配置相同的服务器配置,前期我们都是一台一台的去配置,这种方法操作主要应对于服务器数量不多且配置简单的情况还可以继续这样操作,如果我们后期维护几百服务器或者几万服务器呢? 我应该怎样去快速配置服务器呢?如果需要手动的每台服务器进行安装配置将会给运维人员带来许多繁琐而又重复的工作同时也增加服务器配置的异常,至此自动化运维工具解决我们的瓶颈---Ansible工具. Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng

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

何为Ansible: 简单的自动化运维管理工具,不需要配置代理工具,基于Python研发. Ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. 自动化运维工具"三剑客": 工具 开发语言 结构 配置文件格式 运行任务 Ansible Python 无 YAML 支持命令行 SaltStack Python C/S YAML 支持命令行 Puppet Ruby C/S Ruby语法格式 通过模块实现 a

自动化运维之Ansible服务部署

Ansible简介 Ansible使用Python语言开发,巧妙的设计.实现了简单易用.功能强大的自动化管理工具.目前它已经广泛应用于各种规模.各个领域的企业. Ansible应用领域 Ansible的编排引擎可以出色地完成配置管理.流程控制.资源部署等工作,与其他IT自动化产品比较,Ansible提供了一种不需要安装客户端软件.管理简便.功能强大的基础架构配置.维护工具. 安装部署过程特别简单,学习曲线很平坦: 管理主机便捷,支持多台主机并行管理: 避免在被管理主机上安装客户代理,打开额外端口

自动化工具——ansible

一.什么是ansible 我们在管理服务器时首先应该是安装操作系统,而关于自动化安装操作系统工具常见的有:cobbler.而在装完操作系统后就是配置系统的相关服务的配置文件,而关于此类的自动化工具常见的有:puppet.saltstack.而日常维护中我们还需要在各主机执行相关命令等操作,而此类的自动化工具就有:func.fabric已经ansible.最后也是重要的监控系统运行状态的相关自动化工具:cacti.nagios和zabbix等.下面就是将ansible工具的使用. ansible是

在 CentOS 7 中安装并使用自动化工具 Ansible

Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具.它用Python写成,类似于Chef和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端.它使用SSH来和节点进行通信. 本篇中我们将在CentOS7上安装并配置Ansible,并且尝试管理两个节点. Ansible 服务端 – ansible.linuxtechi.com ( 192.168.1.15 ) 节点 –192.168.1.9 , 192.168.1.10 第一步: 设置EPEL仓库 Ansibl

自动化运维工具Ansible详细部署

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 =========================================================

运维自动化工具ansible学习笔记

利用五一假期的时间学习了下ansible,看了一天的官方文档,对其中需要注意的地方,做下笔记整理下思绪. 一.简介 Ansible是与puppet.saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet.saltstack那样都需要客户端.puppet与saltstack这2个软件都需要安装客户端,而saltstack与ansible很相似,都是属于python流的,但saltstack不是很稳定:puppet虽然稳定,但命令执行的时候,需要配置模块

运维自动化工具ansible

一.基础知识: 1. 简介 ansible基于python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力. 真正具有批量部署的是ansible运行的模块,ansible只是一个框架 ansible架构 (1) 连接插件connection plugins: 负责和被监控端实现通信: (2) host inventory: 指定操作的主机,是一个配置文件里面定义监控的主机 (3) 各种模块核心模块.com