ansible远程自动化运维

ansible是基于python开发的配置管理和应用部署工具。

也是自运维的重要工具,

可以批量配置,部署,管理上千台主机

只需要在一台主机配置ansible就可以完成其他主机的操作

操作模式:

1、模块化操作,命令行执行

2、playbook,剧本,也就是把命令行脚本化。脚本的格式是yaml格式

ansible的特性,幂等性

幂等性:多次操作或者多次执行,对系统的影响不会发生变化,无论执行多少次结果都是一样的。ansible什么都不会做。

http get

post


ansible的四大组件:

1、inventory 主机清单 主机组

必须是要声名管理主机的地址或者其他配置,不声明ansible无法对目标主机进行操作

2、modules 模块 学习的核心

3、插件

4、playbooks 剧本 ----- 脚本(复用)

ansible的命令格式

语法:

复制代码
ansible 组名/ip -m 模块名称 -a '参数列表(执行的命令)'

使用ansible需要安装,必须要声名管理主机的地址

复制代码
yum -y install epel-release

yum -y install ansible

vim /etc/ansible/hosts

ansible-doc -l 列出ansible所有的模块

ansible的模块:

1、comand模块,基于模块,也是ansible的默认模块,不支持管道符和重定向操作。执行一般的linux命令

复制代码
ansible 192.168.233.20 -m command -a 'date'
#测试是否可以运行
ansible web -m command -a 'ls /opt'
#webservers:针对组。这个组内所有的主机都会执行这个命令
ansible all -m command -a 'ls /opt'
#all:表示所有组内所有主机都会执行这个命令

如果不加-m也就是不声明使用的模块。那么默认就是使用command模块只能执行一般的命令。不支持管道和重定向

复制代码
ansible 192.168.233.20 -a 'date'

2、 shell模块

在远程主机执行命令,相当于在执行shell命令,支持管道符和重定向

复制代码
ansible 192.168.233.20 -m shell -a 'useradd test'
#远程创建用户
ansible 192.168.233.20 -m shell -a 'echo 123456 | passwd --stdin root'
#给root用户创建密码

3、cron模块,定时任务模块 minute/hour/day/month/weekday /分/时/日/月/周

创建定时任务:

复制代码
ansible 192.168.233.20 -m cron -a 'minute=30 hour=8 day=3 month=9 job="ls /opt" name="test1"'

删除定时任务 :

复制代码
ansible 192.168.233.20 -a 'crontab -l'
#查看定时任务
ansible 20.0.0.20 -m cron -a 'name="test1" state=absent'
#state=absent:声明状态为删除
ansible 192.168.233.20 -a 'crontab -l'
ansible 192.168.233.20 -m cron -a 'name="None" state=absent'
#如果名字是None直接删除None
#如果有多个None会都被删除

多个计划任务,如果不给名字都是None,一旦删除None,会全部删除。所以不删除(最好是指定一个不重复的名字)

4、 user模块

user模块,用户管理模块:

name 用户名 必选参数

state=present | absent present 创建 absent删除

system=yes | no 创建用户时,是否为系统账号,no是普通用户,yes是程序用户

uid:指定用户的uid

group:指定用户组

shell 默认是系统用户可以不加

careate_home=yes | no 不是默认的家目录/home /opt/test1家目录 create_home=yes 创建,no就是不创建

password:用户添加密码

remove=yes | no: state=absent删除用户,删除用户时是否删除家目录。

创建普通用户

复制代码
ansible 192.168.233.20 -m user -a 'name=xy102 system=no'

创建程序用户

创建用户指定家目录同时添加密码

复制代码
ansible 192.168.124.20 -m user -a 'name=xy88 home=/opt/xy788 create_home=yes password=123456'

删除用户同时删除家目录

复制代码
ansible 192.168.233.20 -m user -a 'name=xy88 remove=yes state=absent'
5、copy复制模块:当前主机的文件复制到目标主机

copy复制模块,把主机的文件复制到目标主机。

复制代码
ansible 192.168.233.20 -m copy -a 'src=/opt/xy101.txt dest=/opt/'

src 表示源文件 dest 目标主机的保存路径

mode 复制文件时,表示权限

owner 文件的所有者 属主

group 文件的所在组 属组

content 指定复制的内容,就不能用src

复制文件更改权限

复制代码
ansible 192.168.233.20 -m copy -a 'src=/opt/xy101.txt dest=/opt/  mode=640'

修改目标主机的文件名

6、file模块:设置文件属性

mode owner group state = touch | absent touch 创建 absent 删除

使用file后面必须是path来指定地址,设着权限。所有者,所在组

复制代码
ansible 192.168.233.20 -m file -a 'path=/opt/acb.txt state=touch mode=777 owner=root group=root'

设置连接文件

复制代码
ansible 192.168.233.20 -m file -a 'path=/opt/acb.txt.link src=/opt/acb.txt state=link'

远程删除文件

复制代码
ansible 20.0.0.30 -m file -a 'path=/opt/fstab.link state=absent'

7、hostname模块,设置远程主机的主机名

复制代码
ansible 192.168.233.20 -m hostname -a "name=nginx1"

8、ping模块,检测主机的连通性

复制代码
ansible 192.168.233.20 -m ping

9、yum模块,在目标主机安装模块

复制代码
ansible 20.0.0.20 -m yum -a 'name=httpd'

在目标主机上的操作都是后台运行,不影响其他用户使用

复制代码
ansible 20.0.0.20 -m yum -a 'name=httpd state=absent'

远程卸载软件包

10、service模块:用来管理目标主机上的软件的运行状态

state=started | stopped | restarted:启动、停止和重启。三种管理动作

enabled=true:是否设置开机自启。如果不加默认就是不自动启动

runlevel:配合enabled的。如果设置开机自启,可以设置运行级别。在命令行设置,但是不生效,一般不在命令行操作

复制代码
ansible 192.168.233.20 -m service -a 'enabled=true name=httpd state=restarted'

安装nginx服务,设置为开机自启,设置访问页面this is nignx

复制代码
ansible 192.168.233.20 -m shell -a 'echo "this is nginx" > /usr/local/nginx/html/index.html'
#设置nginx服务的页面
ansible 192.168.233.20 -m service -a 'enabled=true name=nginx state=restarted'
#启动nginx服务并设置为开机自启
ansible 192.168.233.20 -a 'curl 20.0.0.20'
#终端访问测试一下

11、防火墙和网络模块:

复制代码
ansible 192.168.233.20 -m iptables -a 'chain=INPUT  protocol=ICMP source=192.168.233.100 jump=REJECT' -b

拒绝20访问100

ansible 192.168.233.20 -m iptables -a "chain=INPUT  protocol=tcp destintion_port=80 jump=REJECT" -b

拒绝20访问80端口

ansible 192.168.233.20 -m iptables -a "chain=INPUT  protocol=tcp destintion_port=80 jump=ACCEPT" -b

允许20访问80端口

ansible 192.168.233.20 -m iptables -a "chain=INPUT  protocol=tcp destintion_port=80 jump=REJECT state=absent" -b

删除防火墙策略

12、配置网卡模块:

修改ip地址

复制代码
ansible 192.168.233.20 -m ansible.builtin.lineinfile -a "path=/etc/sysconfig/network-scripts/ifcfg-ens33 regexp='^IPADDR' line='IPADDR 192.168.233.25'" -b

ansible 192.168.233.20 -a 'systemctl restart networkx'

13、script模块 运行本地的脚本,把脚本运行的结果输出到目标主机

复制代码
ansible 192.168.233.20 -m script -a '/opt/test.sh'

14、setup模块 查看目标主机的信息
查看cpu

复制代码
ansible 1892.168.124.20 -m setup -a 'filter=ansible_* processor *'查看内核
ansible 1892.168.124.20 -m setup -a 'filter=ansible_proc_cmdline'查看内存
ansible 1892.168.124.20 -m setup -a 'filter=ansible_mem*'查看系统信息
ansible 1892.168.124.20 -m setup -a 'filter=ansible_system'
相关推荐
XIAOHEZIcode12 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220701 天前
如何搭建本地yum源(上)
运维
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉4 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
dayuOK63074 天前
写作卡壳怎么办?我的“5分钟启动法”
人工智能·职场和发展·自动化·新媒体运营·媒体