ansible

ansible功能:

1、远程造作主机功能

2、自动化运维(playbook剧本 yaml)

ansible概念:是基于python开发的配置管理和应用部署工具。在自动化运维中,现在是异军突起

ansible能批量配置、部署、管理上千台主机。类似于xshell,的一键输入的工具,不需要每次切换主机进行操作

只要有一台ansible的固定主机,就可以所有节点的操作

不需要agent,客户端。

只需要一台主机上配置了ansible

ansible是基于模块进行工作,只是提供了一种运行的架构,执行操作和辩证的是ansible的模块来实现的

copy

service

ansible默认是通过ssh的密钥队实现通信(可以改,但是一般不动)

ansible的另一个特点:所有模块都是幂等性

幂等性:指的是多次操作或者多次执行对系统资源的影响是一致的

例:

systemctl stop firewalld ×n次,只要发现要停止的目标服务已经停止了,不会改变任何结果,什么也不做。所以是幂等性

systemctl start firewalld ×n次,每一次的操作都会先停再起,所以不是幂等性

http get 是幂等性

post 多次执行相同的post,可能创建多个相同的资源。所以不是幂等性

ansible的幂等性决定了你可以放心大胆的使用,重复执行某个任务不会对结果产生任何影响(绝大多数情况)

ansible的四大组件:

1、Inventory(大写i) 主机清单(主机组)。定义ansible可以远程操作的服务器

2、模块(13个常用的) 通过模块可以实现远程的配置和操作

3、Plugins 插件

4、Playbook剧本(shell脚本) yaml格式

ansible的优缺点:

优点:

①部署较简单。主要在控制主机部署即可,被控制主机需要有ssh和python2.5以上版本。基本linux都是自带的

②ansible只能控制linux系统,windows不行

③基于模块工作,可以使用任意语言开发模块(二次开发。底层架构)

管理端:192.168.233.10 ansible

被管理端:20

30

备用: 40

10上操作

yum -y install epel-release.noarch

yum -y install ansible

yum -y install tree

root@10 \~# tree /etc/ansible/

/etc/ansible/

├── ansible.cfg

├── hosts

└── roles

ansible.cfg: ansible的主配置文件,一般无需修改

hosts: 主机组,声明可以被控制的主机

roles: 公共角色目录

配置主机有两种方式

1、直接声明主机的ip地址

2、主机名 (/etc/hosts做映射)

cd /etc/ansible/

vim hosts

把30下面的##删掉

ssh-keygen -t rsa

sshpass -p '123' ssh-copy-id root@192.168.233.20

模块1:command模块

在远程主机执行linux命令,不支持管道符,重定向输出

ansible 的命令格式:

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

sshpass -p '123' ssh-copy-id ++++root@192.168.233.++++ ++++3++++ ++++0++++

ansible 192.168.233.30 -m command -a ' date '

sshpass -p '123' ssh-copy-id ++++root@192.168.233.20++++

ansible 192.168.233.20 -m command -a ' date '

20上操作

tail -f /var/log/messages

ansible 192.168.233.20 -m command a 'date'

指定IP地址,只会目标主机执行

ansible webservers -m command -a 'ls /opt'

指定组,组内所有的声明的主机都会执行

ansible all -m command -a 'ls /opt'

所有声明的主机都会执行

ansible 192.168.233.20 -a 'ls /opt'

不加-m也就是不声明使用的模块,默认就是command模块

command常用参数:

1、chdir 在远程主机上运行命令,提前进入目录

2、creates 判断指定的文件是否存在,如果存在,不指定后面的操作

3、removes 判断指定的文件是否存在,如果存在,执行后续的命令

模块2:shell模块

shell模块,在远程主机执行命令,相当于调用远程主机的shell禁止,支持管道符和重定向。在Ansible当中,多个引号之间要做隔离

ansible 192.168.233.30 -m shell -a touch /opt/123 && echo 456 > /opt/123 && s /opt && cat /opt/123'

&&表示逻辑且,前一个命令成功才会执行后一个命令。

ansible 192.168.233.30 -m shell -a 'touch /opt/123 ; echo 456 > /opt/123 ; s /opt ; cat /opt/123'

;表示逻辑或,前面都成功与否,后面的命令都会执行。

将192.168.233.20的ens33提取出来:

ansible 192.168.233.20 -m shell -a 'echo (ifconfig ens33 \| awk "NR==2{print 2}")| cut -d " " -f2'

ansible 192.168.233.20 -m shell -a "echo (ifconfig ens33 \| awk 'NR==2{print 2}')"

&&符

ansible 192.168.233.30 -m shell -a 'touch /opt/123 && echo 456 > /opt/123 && ls /opt && cat /opt/123'

;符

ansible 192.168.233.30 -m shell -a 'touch 456 ; echo "520" > /opt/456 ; cat /opt/456'

ansible 192.168.233.20 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/a.sh && sh /opt/a.sh'

在脚本中执行用位置变量,实现加法,然后运行脚本

ansible 192.168.233.20 -m shell -a 'echo -e "#!/bin/bash\na=((2+3))\\necho \\a" > /opt/test1.sh && sh /opt/test1.sh'

模块3:cron模块 远程设置定时任务

两种状态:present表示添加(默认就是添加,可以省略);absent表示移除(整个ansible语法中,都表示移除的意思(删除))

分 时 日 月 周

分=minute

时=hour

日=day

月=month

周=weekday

job:任务计划需要执行的命令或脚本(必须要有)

name:计划任务的名称(可以不加)

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

模块4:user模块 用户管理模块

常用的参数:

name:指定用户名(必须要有)

state:present absent

system=yes/no 标记用户是否是一个程序用户

uid 用户的唯一标识

group 用户的所在组

create_home=yes/no 替换用户的家目录,不需要替换用户的家目录可以不写

password 创建用户的密码

command 用户的注释信息(可有可无)

remove=yes/no 当删除用户时,加上remove=yes,删除用户的家目录,相当于userdel -r。如果不需要删除家目录,可以不写

ansible 192.168.233.20 -m user -a 'name=i system=yes'

在创建用户时,虽然声明了是一个程序用户,但是默认的登录shell如果没有额外的声明,还是默认的/bin/bash,UID会按照程序用户来指定

使用ansible的user模块创建用户时,如果创建普通用户,可以不加system=no,指定shell类型也可以不加,默认就是/bin/bash

如果创建的是程序用户,一定要声明system=yes,声明shell的类型shell=/sbin/nologin

也可以指定uid的方式给用户分配一个uid

模块5:group模块 用户组的管理模块

gid 设置组的id

name 必须要有

ansible不适用交互式的命令

模块6:ping模块 检测主机的

相关推荐
芷栀夏1 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风12 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠21 天前
ansible编辑
网络·ansible
芳心粽伙饭21 天前
Ansible课后作业
ansible
烁34722 天前
Ansible初识
ansible
烁34722 天前
Ansible安装部署调试
ansible
烁34722 天前
Ansible命令
ansible
小义_23 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
炸炸鱼.1 个月前
Ansible 企业级实战:Playbook 与 Roles 完全指南
网络·ansible
风曦Kisaki1 个月前
# 自动化运维Day03:Ansible模块进阶(setup,debug),四种常用变量,进阶语法;Ansible Roles(角色)
运维·自动化·ansible