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'
相关推荐
七夜zippoe8 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy64810 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满10 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠10 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Harvey90310 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技11 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀12 小时前
Linux环境变量
linux·运维·服务器
zzzsde12 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º13 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann
NPE~13 小时前
自动化工具Drissonpage 保姆级教程(含xpath语法)
运维·后端·爬虫·自动化·网络爬虫·xpath·浏览器自动化