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'
相关推荐
软件测试曦曦5 分钟前
如何使用Python自动化测试工具Selenium进行网页自动化?
自动化测试·软件测试·python·功能测试·测试工具·程序人生·自动化
A charmer8 分钟前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器
Cynthia的梦24 分钟前
Linux学习-Linux进程间通信(IPC)聊天程序实践指南
linux·运维·学习
安顾里2 小时前
Linux命令-tar
linux·运维·服务器
沐土Arvin2 小时前
Nginx 核心配置详解与性能优化最佳实践
运维·开发语言·前端·nginx·性能优化
有莘不破呀2 小时前
服务器磁盘卷组缓存cache设置介绍
linux·运维·服务器
DBWYX3 小时前
gcc 链接顺序,静态库循环依赖问题
linux·运维·服务器
电气外传3 小时前
Share02-小小脚本大大能量
程序人生·自动化
zxsz_com_cn3 小时前
风电行业预测性维护解决方案:AIoT驱动下的风机健康管理革命
大数据·运维·人工智能
我们的五年3 小时前
【Linux系统】进程间通信-System V消息队列
linux·运维·服务器·c++