Ansible远程自动化运维

概念

ansible是基于python开发的配置管理和应用部署工具,也是自动化运维的重要工具。它可以批量配置、部署、管理上千台主机。只需要在一台主机配置ansible就可以完成其他主机的操作。

操作模式:

1.模块化操作,也可以理解为命令行执行

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

ansible的特性:幂等性

幂等性:多次操作或者多次执行,对系统的影响不会发生变化,也就是不论执行多少次结果都是一样的。就是ansible什么都不会做。注:restart 不属于幂等性范围,因为restart是先stop再start是执行两次不同命令

ansible的四大组件:

1.Inventory 主机清单 又叫主机组

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

2.modules 模块 (核心)

ansible的功能是靠模块来实现的

3.插件

4.playbook 剧本(脚本)  主要作用:复用

安装ansible

yum -y install epel-release

yum -y install ansible

cd /etc/ansible/

vim hosts

添加主机组1 指向到被管理端的ip地址 (名字可以自定义)

添加主机组2 指向到被管理端的ip地址(名字可以自定义)

然后配置密钥对

ssh-keygen -t rsa 然后一路回车即可

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

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

如果报错重新再传一下即可

modules模块和语法

命令行语法

ansible-doc -l  列出ansible所有已安装的模块(支持的模块)

格式:ansible 组名/ip地址 -m 指定模块 -a '参数或者命令'

不加-m,默认使用command

模块

1.  command 基础模块   

基础模块,也是ansible的默认模块。它不支持管道符和重定向操作,它只能执行一般的Linux命令

ansible 192.168.233.23 -m command -a "date" 打印23主机当前的时间

ansible all -m command -a "date" 所有被管理的主机都会执行打印当前的时间

常用的参数

chdir 在目标主机提前进入目录,然后执行指令

ansible 192.168.233.23 -a 'chdir=/home  ls'

creates  判断文件是否存在,如果存在,那么就不执行后面的指令

不执行ls /opt

removes 判断文件是否存在,如果存在,就执行指令

存在就会执行

ansible 192.168.233.23 -a 'tar -xf /opt/nginx-1.22.0.tar.gz -C /opt' 解压文件

ansible 192.168.233.23 -a 'chdir=/opt tar -xf /opt/nginx-1.22.0.tar.gz' 解压文件

2.  shell模块 

支持管道符和重定向,也可以用逻辑表达式 &&  且    ;  逻辑或

ansible 192.168.233.23 -m shell -a 'useradd test' 创建test用户

ansible 192.168.233.23 -m shell -a 'echo 123456 | passwd --stdin test' 添加用户密码

ansible 192.168.233.23 -m shell -a 'echo 123 > /opt/123'  支持重定向

ansible 192.168.2233.23 -m shell -a 'touch /opt/123.txt && echo 123 > /opt/123.txt && cat /opt/123.txt'  可以执行多个命令

ansible 192.168.233.23 -m shell -a 'echo -e "#!/bin/bash\nifconfig" > /opt/test.sh && sh /opt/test.sh'       在23主机创建一个脚本,在脚本中写ifconfig 然后运行脚本

3.  cron定时任务模块 

minute/hour/day/month/weekday  分/时/日/月/周

格式:ansible 192.168.233.23 -m cron -a 'minute=30 hour=8 day=* job="ls /opt" name="test1"'

创建定时任务

job表示定时任务执行的命令

ansible 192.168.233.23 -a 'crontab -l'  查看定时任务

ansible 192.168.233.23 -m cron -a 'name="test1" state=absent'  删除定时任务

注:如果没有名字 name=None

4.  user用户管理模块 

参数

name 用户名 必选参数

state=present 或者 absent     present创建  absent 删除

system=yes 或者 no yes是程序用户 no是普通用户

uid  指定用户的uid  注1000以上都是普通用户 ,1-999都是程序用户

group 指定用户组

shell  可以规定指定用户的登录的shell  默认是系统用户可以不加

create_home=yes 或者 no  不是默认的家目录/home,需要指定家目录时,yes就是创建 ,no就是不创建

password  给用户添加密码

remove=yes 或者 no  只有state=absent删除用户时,用remove=yes删除家目录

ansible 192.168.233.23 -m user -a 'name=xy102  shell=/sbin/nologin system=yes ' 创建程序用户

ansible 192.168.233.23 -m user -a 'name=xy103 home=/opt/xy create_home=yes password=123' 创建和用户、指定家目录、创建密码

ansible 192.168.233.23 -m user -a 'name=xy102 remove=yes state=absent' 删除用户并删除家目录

5.  copy复制模块

就是把当前主机的文件复制到目标主机

参数

src 表示源文件

dest表示目标主机的保存路径

mode复制文件时,表示权限

owner 文件的所有者 属主

group 文件的所在组  属组

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

ansible 192.168.233.23 -m copy -a 'src=/opt/xy102.txt dest=/opt/'

ansible 192.168.233.23 -m copy -a 'src=/opt/xy102.txt dest=/opt/ mode=640 owner=dn group=dn'

ansible 192.168.233.23 -m copy -a 'content="黑" dest/opt/test1.txt      mode=777 owner=dn group=dn'   指定内容复制

6.  file模块  设置文件属性

参数

mode

owner

group

state=touch 创建 或者 absent 删除

ansible 192.168.233.23 -m file -a 'path=/opt/abc.txt state=touch mode=777 owner=dn group=dn'

创建文件

ansible 192.168.233.23 -m file -a 'path=/opt/abc.txt.link src=/opt/abc.txt state=link' 创建连接文件

ansible 192.168.233.23 -m file -a 'path=/opt/abc.txt.link state=absent'  删除连接文件

7.  hostname模块 

设置远程主机的主机名

ansible 192.168.233.23 -m hostname -a "name=nginx1"

8.  ping模块

测试与远程主机之间通信是否正常 是否成功看 success

格式:ansible all -m ping

9. yum模块

在目标主机安装和卸载软件  注:yum只能安装和卸载软件,不能启动软件

ansible 192.168.233.23 -m yum -a 'name=httpd' 安装http

ansible 192.168.233.23 -m yum -a 'name=httpd state=adsent' 卸载http

ansible 192.168.233.23 -a 'systemctl status httpd'  查看httpd的状态

10.  service模块 

用来管理目标主机上的软件的运行状态

常用的参数

name 声明服务名称

state=started或者stopped或者restarted

enabled=true 开机自启

runlevel=40 运行级别 如果设置了开机自启,就需要声明运行级别

ansible 192.168.233.23 -m service -a  'name=nginx enabled=true state=started runlevel=60'

注:这里设置了开机自启,所以必须设置运行级别

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值