欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

ansible离线安装ansible,ansible安装部署ansible

终极管理员 知识笔记 114阅读

Ansible常用模块 一、Ansible1.1 简介1.2 工作原理1.3 Ansible的特性1.3.1 特性一Agentless即无Agent的存在1.3.2 特性二幂等性 1.4 Ansible的基本组件 二、Ansible环境安装部署2.1 安装ansible2.2 查看基本信息2.3 配置远程主机清单 三、Ansible的模块很重要)3.1 ansible的命令格式3.2 Command模块3.2.1 基本格式和常用参数3.2.2 举个例子 3.3 shell模块3.3.1 基本格式和常用参数3.3.2 举个例子 3.4 cron模块3.4.1 基本格式和常用参数3.4.2 举个例子 3.5 user模块3.5.1 基本格式和常用参数3.5.2 举个例子 3.6 group模块3.6.1 常用参数3.6.2 举个例子 3.7 copy模块 面试常问3.7.1 基本格式和常用参数3.7.2 举个例子 3.8 file模块3.8.1 常用参数3.8.2 举个例子 3.9 hostname模块3.10 ping模块3.11 yum 模块3.12 service/systemd 模块3.13 script 模块3.14 mount 模块3.15 archive 模块3.15.1 常用参数3.15.2 举个例子 3.16 unarchive 模块3.16.1 常用参数3.16.2 举个例子 3.17 replace 模块3.17.1 常用参数3.17.2 举个例子 3.18 setup 模块

一、Ansible 1.1 简介

Ansible是自动化运维工具能实现跨主机对应用编排管理部署。

Ansible能批量配置、部署、管理上千台主机是应用级别的跨主机编排工具。

比如以前需要切换到每个主机上执行的一或多个操作使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作。

1.2 工作原理

基于模块工作通过模块实现在被控制节点上执行相应的命令操作。

1.3 Ansible的特性 1.3.1 特性一Agentless即无Agent的存在

1无客户端agent存在不需要在被控制的节点上安装额外的客户端应用

2通过ssh协议与被控制节点通信。

1.3.2 特性二幂等性

所谓幂等性指的是无论执行多少次同样的运算结果都是相同的即一条命令任意多次执行所产生的影响均与一次执行的影响相同。

Ansible的很多模块具有幂等性如果多次模块操作的状态没有发生改变则不会重复执行。

1.4 Ansible的基本组件

InventoryAnsible管理的主机清单 /etc/anaible/hosts 需要管理的服务清单 ;

ModulesAnsible执行命令的功能模块多数为内置核心模块也可自定义

Plugins模块功能的补充如连接类型插件、循环插件、变量插件、过滤插件等该功能不常用

API供第三方程序调用的应用程序编程接口。

Playbook基于YAML格式的文件用于定义和描述一系列任务。

二、Ansible环境安装部署 角色IP安装工具管理端192.168.2.100ansible被管理端1192.168.2.102无需安装被管理端2192.168.2.103无需安装 2.1 安装ansible

在管理端安装 ansible。

#先安装 epel 源yum install -y epel-release#yum安装ansibleyum install -y ansible
#可选操作修改被管理端的主机名方便管理区分hostnamectl set-hostname  webserverhostnamectl set-hostname  dbserver
2.2 查看基本信息
ansible --version
#查看ansible 目录结构tree /etc/ansible├── ansible.cfg#ansible的配置文件一般无需修改├── hosts#ansible的主机清单用于存储需要管理的远程主机的相关信息└── roles/#公共角色目录
2.3 配置远程主机清单
cd /etc/ansiblevim hosts       [webservers]#配置组名192.168.2.102#组里包含的被管理的主机IP地址或主机名主机名需要先修改/etc/hosts文件[dbservers]192.168.2.103
#配置密钥对验证ssh-keygen -t rsa -P  -f ~/.ssh/id_rsayum install -y sshpasssshpass -p 123123 ssh-copy-id -o StrictHostKeyCheckingno root192.168.2.102sshpass -p 123123 ssh-copy-id -o StrictHostKeyCheckingno root192.168.2.103   


#免密登录测试以被管理端1为例ssh 192.168.2.102
三、Ansible的模块很重要) 3.1 ansible的命令格式
#ansible命令格式ansible 组名 -m 模块名 -a 参数#-a 用于向模块传递参数
#查看当前系统中的ansible模块ansible-doc -l
#查看特定模块的摘要信息ansible-doc -s <module_name>
3.2 Command模块

功能在远程主机执行命令此为默认模块可忽略 -m 选项。

注意此命令不支持 $VARNAME < > | ; & 等即不支持管道符、重定向符号。

注意此模块不具有幂等性

3.2.1 基本格式和常用参数
#基本格式ansible <组名/IP> [-m command] -a [参数] 命令
常用参数功能chdir在远程主机上运行命令前提前进入目录creates判断指定文件是否存在如果存在不执行后面的操作removes判断指定文件是否存在如果存在执行后面的操作 3.2.2 举个例子
#指定组/IP执行命令ansible 192.168.2.102 -m command -a dateansible webservers -a date  #忽略-m选项默认使用command格式
#chdir参数ansible all -m command -a chdir/home  ls ./
#creates参数ansible all -m command -a creates/opt/test.txt  ls ./
#removes参数ansible all -m command -a removes/opt/test.txt  ls ./
3.3 shell模块

功能和command模块类似在远程主机执行命令相当于调用远程主机的shell进程然后在该shell下打开一个子shell运行命令。

注意此模块不具有幂等性

注意此模块支持管道符号等功能

3.3.1 基本格式和常用参数
ansible <组/IP/all> -m shell -a   
常用参数功能chdir在远程主机上运行命令前提前进入目录creates判断指定文件是否存在如果存在不执行后面的操作removes判断指定文件是否存在如果存在执行后面的操作 3.3.2 举个例子
#shell模块能够使用管道符ansible dbservers -m shell -a ifconfig  | awk NR2 {print \$2}


3.4 cron模块

功能在远程主机定义crontab任务计划。

ansible-doc -s cron#按 q 退出
3.4.1 基本格式和常用参数
#基本格式ansible <组/IP/all> -m cron -a  
常用参数功能minute/hour/day/month/weekday分/时/日/月/周job任务计划要执行的命令name任务计划的名称user指定计划任务属于哪个用户默认是root用户statepresent表示添加可以省略absent表示移除。 3.4.2 举个例子

1周一到周五早八点半和晚八点半 执行 复制/var/log/messages 到 /opt

ansible dbservers -m cron -a minute30 hour8,20  weekday1-5  job/usr/bin/cp  -f /var/log/message /opt namebackup1


2每两个月的5 15 25 执行复制

ansible webservers -m cron -a day5-25/10 month*/2 job/usr/bin/cp  -f /var/log/message /opt namebackup15-15/10 #隔十天 


3删除

指定状态为absent就行

ansible webservers -m cron -a namebackup1 stateabsent


3.5 user模块

功能在远程主机管理用户账户

3.5.1 基本格式和常用参数
ansible <组/IP/all> -m user -a  
常用参数功能name用户名必选参数statepresent|absent创建账号或者删除账号present表示创建absent表示删除systemyes|no是否为系统账号uid用户uidgroup用户基本组groups用户所属附加组shell默认使用的shellcreate_homeyes|no是否创建家目录password是否用户的密码建议使用加密后的字符串removeyes|no当stateabsent时是否删除用户的家目录 3.5.2 举个例子
ansible dbservers -m user -a nametest01#创建用户test01ansible dbservers -m command -a tail -n1 /etc/passwd
ansible dbservers -m user -a nametest01 stateabsent#删除用户test01ansible dbservers  -a tail -n1 /etc/passwd
3.6 group模块

功能在远程主机进行用户组管理的模块

3.6.1 常用参数
ansible <组/IP/all> -m group -a  

name用户名必选参数

statepresent|absent创建账号或者删除账号present表示创建absent表示删除

systemyes|no是否为系统账号

gid:组id

3.6.2 举个例子
ansible dbservers -m group -a namemysql gid306 systemyes#创建mysql组ansible dbservers -m user -a nametest01 uid306 systemyes groupmysql#将test01用户添加到mysql组中ansible dbservers -a id test01    
3.7 copy模块 面试常问

功能从ansible服务器主控端复制文件到远程主机

注意srcfile 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件

3.7.1 基本格式和常用参数
#基本格式ansible < > -m copy -a src   dest   [owner ] [mode]   
常用参数功能注意事项src指出源文件的路径可以使用相对路径或绝对路径支持直接指定目录如果源是目录则目标也要是目录dest指出复制文件的目标及位置使用绝对路径如果源是目录指目标也要是目录如果目标文件已经存在会覆盖原有的内容mode指出复制时目标文件的权限owner指出复制时目标文件的属主group指出复制时目标文件的属组content指出复制到目标主机上的内容不能与src一起使用 3.7.2 举个例子
ansible dbservers -m copy -a src/etc/fstab dest/opt/fstab.bak ownerroot mode640ansible dbservers -a ls -l /optansible dbservers -a cat /opt/fstab.bak
ansible dbservers -m copy -a contenthelloworld dest/opt/hello.txt  #将helloworld写入/opt/hello.txt文件中ansible dbservers -a cat /opt/hello.txt 
3.8 file模块

功能在远程主机管理文件属性、创建软链接等

3.8.1 常用参数
#基本格式ansible < > -m file -a 
常用参数功能path指定远程服务器的路径也可以写成dest“name”state状态可以将值设定为directory表示创建目录设定为touch表示创建文件设定为link表示创建软链接设定为hard表示创建硬连接设定为absent表示删除目录文件或链接mode文件复制到远程并设定权限默认file644directory755owner文件复制到远程并设定属主默认为rootgroup文件复制到远程并设定属组默认为rootrecurese递归修改src指的是目标主机上的源文件。与copy模块不同。 3.8.2 举个例子
#修改文件的属主属组权限等ansible dbservers -m file -a ownertest01 groupmysql mode644 path/opt/fstab.bak
#软连接  statelinkansible dbservers -m file -a path/opt/fstab.link src/opt/fstab.bak statelink 
#创建一个空文件,statetouchansible dbservers -m file -a path/opt/abc.txt statetouch#创建一个空目录,statedirectoryansible dbservers -m file -a path/data statedirectory


#删除一个文件,stateabsentansible dbservers -m file -a path/opt/abc.txt stateabsentansible dbservers -a removes/opt/abc.txt ls ./
3.9 hostname模块

功能用于管理远程主机上的主机名

#修改主机名ansible dbservers -m hostname -a namemysql01
3.10 ping模块

功能测试远程主机的连通性。

ansible all -m ping
3.11 yum 模块

功能在远程主机上安装与卸载软件包

常用参数功能name需要安装的服务名statepresent(缺省值)/absent状态abasent表示卸载服务
ansible webservers -m yum -a namehttpd#安装服务
#卸载服务ansible webservers -m yum -a namehttpd stateabsent
3.12 service/systemd 模块

功能用于管理远程主机上的管理服务的运行状态。

常用参数功能name指定需要控制的服务名称state指定服务状态其值可以为stopped、started、reloaded、restarted、statusenabled指定服务是否为开机启动yes为启动no为不启动daemon_reloadyes重启systemd服务让unit文件生效
#先安装服务ansible webservers -m yum -a namehttpd#启动httpd服务ansible webservers -m service -a enabledtrue namehttpd statestarted#查看web服务器httpd运行状态ansible webservers -a systemctl status httpd
3.13 script 模块

功能在远程主机执行shell脚本。

注意script模块不具有幂等性所以建议用剧本来执行。

 #在本地写一个脚本 vim test.sh #!/bin/bash echo hello ansible from script > /opt/test2.txt、 chmod x test.sh                              #给脚本执行权限
 ansible dbservers -m script -a /opt/test.sh      #远程运行本地脚本 ansible dbservers -a cat /opt/test2.txt   #查看生成的文件内容
3.14 mount 模块

功能在远程主机挂载目录/设备文件

常用参数功能src指定要挂载的设备或分区路径。path指定要挂载到的目标路径。fstype指定要挂载的文件系统类型。state指定挂载状态可选值为 mountedunmountedabsent。opts指定挂载选项例如挂载选项或参数。
ansible dbservers -m mount -a src/dev/sr0 path/mnt statemounted fstypeiso9660#使用 Ansible 的 mount 模块将设备 /dev/sr0 的内容挂载到目标路径 /mnt。#文件系统类型为 iso9660并将该设备标记为已挂载状态
3.15 archive 模块

功能在远程主机压缩文件。

3.15.1 常用参数 常用参数功能path指定要打包的源目录或文件的路径。dest指定打包文件的输出路径。format指定打包文件的格式可以是 ziptargzbzip2。默认为 tar格式。remove指定是否在打包文件之后删除源目录或文件。可选值为 yesno。默认为 no即不删除源目录或文件。 3.15.2 举个例子
ansible dbservers -m archive -a path/etc/yum.repos.d/ dest/opt/repo.zip formatzip
#remove参数的使用压缩后删除源文件ansible dbservers -m archive -a path/opt/test2.txt,/opt/123.txt dest/opt/abc123.tar.gz formatgz removeyes
3.16 unarchive 模块

功能将本地或远程主机的压缩包在远程主机解压缩 。

3.16.1 常用参数 常用参数功能copy指定是否将打包文件复制到远程节点以进行解压缩。remote_src(已弃用)改用 copy 参数。src指定要解压缩的打包文件路径可以是本地路径或远程路径。dest指定要将文件解压缩到的目标目录。creates指定一个文件路径如果该文件已经存在则不进行解压缩操作。remote_tmp用于制定远程节点上的临时目录。默认为 /tmp
#copy参数copy参数的可选值为 yes 或 no。默认为 yes即先将文件从控制节点复制到远程节点然后在远程节点上进行解压缩。如果已经将文件分发到了目标节点并想要提高效率可以将该值设置为 no。反效果的参数为 remote_src。
3.16.2 举个例子
#现在ansible主机建立压缩包tar cf test.tar.gz test.sh #将 ansible 主机的压缩文件拷贝到到远程主机并解压修改文件所属组和用户ansible dbservers -m unarchive -a src/opt/test.tar.gz dest/root copyyes
3.17 replace 模块

功能在远程主机修改文件内容 。

类似于sed命令主要也是基于正则进行匹配和替换。

3.17.1 常用参数 常用参数功能path指定需要处理的文件路径regexp用于匹配需要替换内容的正则表达式replace用于替换匹配内容的字符串after在哪个字符串之后进行替换默认为空before在哪个字符串之前进行替换默认为空backup是否备份文件选项为 yes 或 no 3.17.2 举个例子
#在db服务器的主机下创建测试文件vim /opt/test.txt11 22 33 44 55 66aa bb cc dd ee ff1a 2b 3c 4d 5e 6f
#匹配 33 并修改为 cccansible dbservers -m replace -a path/opt/test.txt regexp33 replacecc#查看ansible dbservers -a cat /opt/test.txt
#匹配到任意一个或多个开头的行增加注释ansible dbservers -m replace -a path/opt/test.txt regexp^(.*) replace#\1#取消注释ansible dbservers -m replace -a path/opt/test.txt regexp^#(.*) replace\1


#匹配以 a 开头的后面有一个或者多个字符的行并在前面添加 # 注释ansible dbservers -m replace -a path/opt/test.txt regexp^(a.*) replace#\1
3.18 setup 模块

功能使用facts组件获取远程主机的系统信息(facts信息)

常用参数功能filter指定需要过滤的条件仅返回满足条件的主机信息默认为空
ansible webservers -m setup#获取mysql组主机的facts信息ansible dbservers -m setup -a filter*ipv4    #使用filter可以筛选指定的facts信息

facts信息

主机的各种信息包括硬件、操作系统、网络等。

运行命令后会返回一个包含主机 facts 信息的 JSON 格式输出。

标签:
声明:无特别说明,转载请标明本文来源!