[自动化]部署ansible服务及其常用的命令模块(代码片段)

author author     2022-12-19     451

关键词:

Ansible简介:

Ansible基于Python开发,默认通过SSH协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,可同时支持多台主机进行管理。ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,能够实现批量运行命令、部署程序、配置系统等功能。

Ansible的基本架构主要包括:

(1)Ansible core核心引擎。
(2)Host inventory 主机清单:用来定义Ansible管理的主机,默认是在Ansible配置文件中定义被管理主机,同时也支持自定义动态主机清单。
(3)Comecton pugins连接插件:负责和被管理主机实现通信。除支持使用SSH连接被管理主机外,Ansible还支持其他的连接方式,所以需要有连接插件将各个主机用连接插件连接到Ansible。
(4)Core modules核心模块:是Ansible自带的模块,使用这些模块将资源分发到被管理主机,使其执行特定任务或匹配特定的状态。
(5)Custom meodle自定义模块:用于完成模块功能的补充,可借助相关插件完成记
录日志、发送邮件等功能。
(6)Playbooks (yaml, jinja2) 剧本:用来集中定义Ansible任务的配置文件,即将多个任务定义在一个剧本中由Ansible自动执行,可以由控制主机针对多台被管理主机同时运行多个任务。

系统环境

主机 操作系统 IP地址 组名
控制主机 CentOS 7.4 x86_64 192.168.100.138
被管理主机 CentOS 7.4 x86_64 192.168.100.131 webserver
被管理主机 CentOS 7.4 x86_64 192.168.100.132 mysql

安装部署Ansible服务

1.安装Ansible

准备yum源,直接使用yum命令安装Ansible

yum install -y epel-release  #安装epel源
yum install ansible -y

查看ansible软件的版本信息

ansible --version 

技术分享图片
Ansible主要相关配置文件在/etc/ansible目录下。

[[email protected] ~]# cd /etc/ansible/
[[email protected] ansible]# pwd
/etc/ansible
[[email protected] ansible]# ll
总用量 24
-rw-r--r--. 1 root root 19549 7月   6 23:53 ansible.cfg  #配置文件
-rw-r--r--. 1 root root  1016 7月   6 23:53 hosts  #管控主机文件
drwxr-xr-x. 2 root root     6 7月   6 23:53 roles

2.配置主机清单

修改主机与组配置后,可同时连接到多个被管理主机上执行任务。

cd /etc/ansible
vim hosts
    [webserver]       #被管理主机分类
    192.168.100.131
    [mysql]
    192.168.100.132   #被管理主机分类

3.设置SSH无密码登录

使用ssh-keygen产生一对密钥,使用ssh-copy-id来下发生成的公钥。

ssh-keygen -t rsa       #基于ssh密钥的连接
ssh-copy-id [email protected]
ssh-copy-id [email protected]    #配置密钥对验证

技术分享图片
为了实现免交互代理,可以输入以下命令:

ssh-agent bash
ssh-add

技术分享图片

Ansible命令应用

Ansible可以使用命令行方式进行自动化管理,它的命令行管理工具都是由一系列模块、参数所支持的,基本语法如下:

ansible [主机] [-m 模块] [-a args]

Ansible自带了很多模块,能够下发执行Ansible的各种管理任务。不过查看模块帮助信息可以用ansible-doc工具。

ansible-doc -l     #列出所有已安装的模块 注:按q退出
ansible-doc -s yum   #-s列出yum模块描述信息和操作动作

技术分享图片
技术分享图片

1.command模块

-m选项指定使用模块,默认使用command模块,用于在被管理主机上运行命令。

(1)使用IP地址指定运行主机

ansible 192.168.100.131 -m command -a ‘date‘ 

技术分享图片
(2)使用被管理主机的分类运行

ansible mysql -m command -a ‘date‘

技术分享图片
(3)在所有主机清单中的主机运行

ansible all -m command -a ‘date‘

技术分享图片
(4)不加-m选项,默认运行command模块

ansible all -a ‘tail -1 /etc/passwd‘

技术分享图片

2.cron模块

cron模块用于定义任务计划。其中有两种状态(state ):present表示添加(省略状态默认使用),absent表示移除。

(1)添加任务计划

ansible webserver -m cron -a ‘minute="*/1" job="/bin/echo heihei" name="test cron job"‘

技术分享图片

#查看计划是否添加成功
ansible webserver -a ‘crontab -l‘

技术分享图片
进webserver组的主机查看
技术分享图片
技术分享图片
(2)移除任务计划

ansible webserver -m cron -a ‘name="test cron job" state=absent‘

技术分享图片

3.user模块

user模块用于创建新用户和更改、删除已存在的用户。其中name选项用来指明创建的用户名称。请求的是useradd, userdel, usermod三个指令
(1)创建用户

ansible mysql -m user -a ‘name="test01"‘

技术分享图片

#查看用户是否添加成功
ansible mysql -m command -a ‘tail /etc/passwd‘

技术分享图片
(2)删除用户

ansible mysql -m user -a ‘name="test01" state=absent‘

技术分享图片

4.group模块

group模块用于对用户组进行管理。请求的是groupadd, groupdel, groupmod 三个指令。

例如:创建mysql组,将已创建好的用户test01添加到mysql组中。

#创建mysql组
ansible mysql -m group -a ‘name=mysql gid=306 system=yes‘  

技术分享图片

 #查看组是否添加
ansible mysql -a ‘tail /etc/group‘

技术分享图片

#将用户mysql添加到mysql组中
ansible mysql -m user -a ‘name=mysql uid=306 system=yes group=mysql‘

技术分享图片

#查看用户mysql是否添加到mysql组中
ansible mysql -a ‘tail -1 /etc/passwd‘

技术分享图片

5.copy模块

copy模块用于实现文件复制和批量下发文件。其中使用src来定义本地源文件路径,使用dest定义被管理主机文件路径,使用content则是通过指定信息内容来生成目标文件。

(1)将本地文件/etc/fstab复制到被管理主机上的/opt/fstab.back,将所有者设置为root,权限设置为640.

ansible mysql -m copy -a ‘src=/etc/fstab dest=/opt/fstab.back owner=root mode=640‘

技术分享图片

#查看是否存在复制的文件
ansible mysql -a ‘ls -l /opt‘

技术分享图片
(2)将hello heihei!写入/opt/fstab.back。

ansible mysql -m copy -a ‘content="hello heihei!"
dest=/opt/fstab.back‘

技术分享图片

#查看内容是否写入
ansible mysql -a ‘cat /opt/fstab.back‘ 

技术分享图片

6.file模块

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

(1)设置文件/opt/fstab.back的所属主为mysql,所属组为mysql,权限为644.

ansible mysql -m file -a ‘owner=mysql group=mysql mode=644 path=/opt/fstab.back‘

技术分享图片

#查看文件的属性
ansible mysql -a ‘ls -l /opt/‘

技术分享图片
(2)设置/opt/fstab.link为/opt/fstab.back的链接文件。

ansible mysql -m file -a ‘path=/opt/fstab.link src=/opt/fstab.back state=link‘ 

技术分享图片

#查看链接文件
ansible mysql -a ‘ls -l /opt/‘

技术分享图片
(3)删除文件/opt/fstab.back

ansible mysql -m file -a "path=/opt/fstab.back state=absent" 

技术分享图片
(4)创建文件/opt/test。

ansible mysql -m file -a "path=/opt/test state=touch"

技术分享图片

7.ping模块

ping,模块是用来检测指定主机的连通性。

ansible all -m ping

技术分享图片

8.shell模块

shell模块可以在被管理主机上运行命令,并支持像管道符等功能的复杂命令。

例如,创建用户使用无交互模式给用户设置密码。

#创建用户user1
ansible mysql -m user -a ‘name=user1‘
#无交互给用户user1设置密码
ansible mysql -m shell -a ‘echo abc123|passwd --stdin user1‘

技术分享图片

9.script模块

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

例如,编辑一个本地脚本test.sh,复制到被管理主机上运行。

vi /opt/test.sh
#!/bin/bash
echo "hello ansible from script"> /opt/script.txt

chmod +x /opt/test.sh

ansible mysql -m script -a ‘/opt/test.sh‘

技术分享图片

#查看脚本实现
ansible mysql -a ‘cat /opt/script.txt‘

技术分享图片

10.yum模块

yum模块复责在被管理主机上安装与卸载软件包,其中使用name指定要安装的软件包,使用state指定安装软件包的状态,present、latest用来表示安装,absent表示卸载。

(1)安装zsh软件包

ansible mysql -m yum -a ‘name=zsh‘ 

技术分享图片

#查看是否安装
ansible mysql -a ‘rpm -q zsh‘

技术分享图片
(2)卸载zsh软件包

ansible mysql -m yum -a ‘name=zsh state=absent‘

技术分享图片
(3)安装httpd软件包

ansible webserver -m yum -a ‘name=httpd‘ 

技术分享图片

11.service模块

service模块用来控制管理服务的运行状态。其中enabled表示是否开机自启动,取值为true或false,使用name定义服务名称,使用state指定服务状态,取值分别为started、stoped、restarted.

(1)启动httpd服务并设置开机自启动。

ansible webserver -m service -a ‘enabled=true name=httpd state=started‘

技术分享图片

(2)查看httpd服务的状态

ansible webserver -a ‘systemctl status httpd‘

技术分享图片

12.setup模块

setup模块收集、查看被管理主机的facts。每个被管理主机在接并运行管理命令之前,都会将自己的相关信息(操作系统、IP地址)发送给控制主机。

例如,查看mysql组的facts信息。

ansible mysql -m setup 

技术分享图片
以上皆是Ansible常用的模块,如果用到其他模块可以使用ansible-doc工具。

自动化运维—ansible工具的使用(代码片段)

Ansible一、概述1.1特点1.2优点二、服务搭建2.1准备工作2.2ansible端设置三、ansible命令行模块3.1command模块概述命令使用常用参数3.2shell模块概述命令3.3cron模块概述常用参数命令3.4user模块概述常用参数命令3.5group模块概述命令3.6copy模... 查看详情

详解ansible服务常用命令模块(代码片段)

ansible可以使用命令行方式进行自动化管理,基本语法如下:ansible主机名-m模块名称-a模块特有参数ansible的命令行管理工具都是由一系列模块、参数所支持的,可以在命令后面加上-h或--help获取帮助。如使用ansible-doc-h或者ansible-doc... 查看详情

ansible命令应用之常用模块(持续更新中)(代码片段)

...博客中主要介绍了Ansible概述及Ansible部署,详见以下链接自动化运维之Ansible概述及Ansible部署请添加链接描述本篇将介绍Ansible命令应用之常用模块,以实例的形式进行演示。Ansible可用参数-v:输出详细信息(可以使用多个v)-iPATH... 查看详情

ansible之概念和常用模块介绍

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

ansible安装部署和配置常用模块整理

...练习1.1.1 ansible软件介绍1.ansible是一个基于python开发的自动化运维工具!(saltstack)2.其功能的实现是基础SSH远程连接服务的3.ansible可以实现批量系统配置、批量软件 查看详情

自动化运维—ansible工具的使用(代码片段)

Ansible一、概述1.1特点1.2优点二、服务搭建2.1准备工作2.2ansible端设置三、ansible命令行模块3.1command模块概述命令使用常用参数3.2shell模块概述命令3.3cron模块概述常用参数命令3.4user模块概述常用参数命令3.5group模块概述命令3.6copy模... 查看详情

自动化运维—ansible工具的使用(代码片段)

Ansible一、概述1.1特点1.2优点二、服务搭建2.1准备工作2.2ansible端设置三、ansible命令行模块3.1command模块概述命令使用常用参数3.2shell模块概述命令3.3cron模块概述常用参数命令3.4user模块概述常用参数命令3.5group模块概述命令3.6copy模... 查看详情

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

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

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

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

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

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

ansible常用模块详解(代码片段)

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

如何使用ansible自动化部署docker镜像

参考技术Aansible默认提供了很多模块来供我们使用。在Linux中,我们可以通过ansible-doc-l命令查看到当前ansible都支持哪些模块,通过ansible-doc-s模块名又可以查看该模块有哪些参数可以使用。下面介绍比较常用的几个模 查看详情

ansible的部署和命令模板

...ible简介Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。Ansible基于Pythonparamiko开发... 查看详情

ansible自动化运维之ansible命令运行方式及常用参数和常用模块(代码片段)

Ansible常用模块ansible实现管理的方式演示环境Ad-Hoc执行方式获得帮助ansible命令运行方式及常用参数ansible输出不同颜色含义ansible中的常用模块1.command2.shell3.script4.copy5.fetch6.file7.archive8.unarchive9.hostname10.cron11.yum_repository12.dnf/yum13.s 查看详情

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

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

ansible自动化运维详解ansible管理方式常用参数及常用模块(代码片段)

文章目录ansible自动化运维详解(二)ansible管理方式、常用参数及常用模块一、ansible实现管理的方式二、ansible命令常用参数三、ansible基本颜色代表的信息四、ansible常用模块(1)4.1、command4.2、shell4.3、script4.4、cop... 查看详情

ansible常用模块详解(代码片段)

Ansible可以使用命令行方式进行自动化管理,且ansible的命令行管理工具都是由一系列模块、参数支持的,我们可以通过ansible-doc工具查看模块帮助信息。本篇博文将详细讲述ansible模块功能及操作。Ansible命令参数:-v:输出详细信... 查看详情

自动化运维之详细部署安装ansible服务(超简单)(代码片段)

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