Ansible

工作原理

安装

只需要装在一台主机上

yum -y install epel-release
yum -y install ansible

连通性测试

vim /etc/ansible/hosts

#往这个文件中添加ip,及密码
192.168.30.121  ansible_ssh_user='root' ansible_ssh_pass='123456' #后面是密码
192.168.30.122 
#联通自己
ansible localhost -m ping

#连通122
ansible 192.168.30.122 -m ping


#连通123
ansible 192.168.30.123 -m ping

#会失败,提示输入密码,
ansible 192.168.30.123 -m ping -u root -k 
SSH password:
#输入密码后,连通成功

ansible 192.168.30.124 -m ping -u root -k 

#不会成功,因为/etc/ansible/hosts中没定义

ssh免密

#在 /etc/hosts 中加入
192.168.30.122 server2
192.168.30.123 server3

#这样就可以通过访问后面的关键字直接连接ip

#配置ssh免密

ssh-keygen
#别管提示,一直按ENTER
shh-copy-id server2
#然后输入密码就配置好了

ansible连接主机主要是通过ssh,如果配置免密,就不需要输入密码或在/etc/ansible/hosts 中加入密码,在这个配置文件中,也可以直接写server2,server3

如果不在/etc/ansible/hosts中的ip,使用ansible是没有用的

主机清单

增加主机组

vim /etc/ansible/hosts
[webserver]
server2
server3

测试

ansible webserver -m ping

增加用户名,密码

如果配置免密就不需要了

server2 ansible_ssh_user='root' ansible_ssh_pass='123456'
server3 ansible_ssh_user='root' ansible_ssh_pass='123456'


############
#正则写法
[webserver]
server[2:3] ansible_ssh_user='root' ansible_ssh_pass='123456'

增加端口

请将server1的sshd程序端口修改为2222

测试连接会连接失败

vim /etc/ansible/hosts

server2 ansible_ssh_port='2222'
server3 ansible_ssh_port='2222'

测试连接成功,记得修改回去

组变量

ansible内部变量可以帮助我们简化主机清单的设置,可以简化配置时有相同的配置

[webserver]
server2
server3
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'

常用变量

子分组

将不同的分组进行组合

[apache]
host[1:2]
[nginx]
host[3:4]
[webserver:children]
apache
nginx
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'

新增主机清单

从别的地方拷贝过来一份主机清单

vim hostlist

[dockers]
host1
host2
[dockers:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666
#连通主机清单中的,dockers主机组
ansible -i  hostlist dockers  -m ping  

拷贝模块

把主机中的某个文件发送到其他主机

ansible server2 -m copy -a 'src=/etc/hosts dest=/home/1.txt owner=root group=bin mode=777' 
#-m是指定使用模块,ping,copy,...
#-a是补充选项,
#src是源文件地址,dest是目标主机地址,owner,group,和mode


ansible server2 -m copy -a 'src=/etc/hosts dest=/home/2.txt owner=root group=bin mode=777 backup=yes' 
#backup是备份的意思,如果要去到的目录下有东西且内容不同,会生成一个带时间后缀的文件

这些提示发送成功

用户模块

给主机添加用户

ansible server2 -m user -a 'name=test state=present'

修改密码

#先生成加密密码
echo '3058905829' | openssl passwd -1 -stdin

$1$aSasrqF5$jey5/J74PCsTvR9sV0jp41





#发送

ansible server2 -m user -a 'name=test password="$1$aSasrqF5$jey5/J74PCsTvR9sV0jp41"'

修改用户登录shell

 ansible server2 -m user -a 'name=test shell=/sbin/nologin append=yes'
#append是追加的意思

删除用户

ansible server2 -m user -a 'name=test state=absent'

软件包模块

帮助 ansible-doc yum

ansible server2 -m yum -a 'name="httpd" state=latest'


#*号表示所有已经安装软件
ansible server2 -m yum -a 'name="*" state=latest'


#删除
ansible server2 -m yum -a 'name="httpd" state=absent'

服务模块

帮助 ansible-doc service

装好的软件不会自动启动,需要启动目标服务器

#启动和开机自启
ansible server2 -m service -a 'name=httpd state=started enabled=yes'

#停止
ansible server2 -m service -a 'name=httpd state=stopped '


#重启,关闭自启动
ansible server2 -m service -a 'name=httpd state=restarted enabled=no'

文件模块

帮助 ansible-doc file

ansible server2 -m file -a 'path=/tmp/00.txt mode=777 state=touch'
#
ansible server2 -m file -a 'path=/tmp/00 mode=777 group=bin  state=directory'
#
ansible server2 -m file -a 'dest=/tmp/11 mode=777 group=bin  state=directory'
#

收集模块

查看目标主机的消息信息

帮助 ansible-doc steup

ansible server2 -m steup

#过滤
ansible server2 -m steup -a 'filter=ansible_all_ipv4_address'

fetch--从远程主机获取问件到本地

帮助 ansible-doc fetch

ansible server2 -m fetch -a 'src=/app/fetab dest=app'

#src后面必须是一个文件,
#dest存放本地的的目录

cron

管理任务计划的

#action:cron backup =#如果创建,则创建一个crontab备份
#cron_file=#如果指定,使用这个文件cron.d,而不是单个用户
#day=#日应该的运行工作(1-31,,/2,)
#hour=#小时(0-23,,/2,)
#minute=#分钟(0-59,,/2,)
month=#月(1-12,*,/2,)
weekday=#周(0-6 for Sunday-Sarturday)
job=#指明运行的命令是什么
name=#任务描述
reboot#热舞子啊重启时运行,不建议使用,使用special_time
special_time #特殊的时间范围,参数:reboot(重启时),annually(每年),,onthly(每月),weekly(每周),daily(每天),hourly(每小时)

state #指定状态,present表示添加定时任务,也是默认设置,absent表示删除定任务
user #以哪个用户身份运行
ansible server2 -m cron -a 'name="sync time from ntpserver" minute="**/10" job="/sbin/ntpdate 192.168.31.122 &> /dev/null"'

group

用户组模块,添加或删除组

gid #设置组的gid号
name= #管理组的名称
state #指定组状态,默认为创建,设置值为absent 为删除
system #设置值为yes,表示创建系统组
ansible server2 -m group -a 'name=g1 gid=1010 state=present'
#创建
ansible server2 -m group -a 'name=g1 state=absent'

script

在指定节点运行服务端脚本

vim wan.sh

#!/bin/bash
date > /app/data.log


################################################
ansible server2 -m script -a './wan.sh'

unarchive

解压缩

默认情况下,此模块会将本地压缩包拷贝到远程机器上解压,当设置了remote_src=yes选项表示解压远程主机上的压缩包

src #必选项,要解压的包名
dest #必选项,解压到哪个目录下
remote_src #yes 解压远程主机上的包
           #no 将管理机上的包传到远程主机上解压

#打包
tar -cjf 1.tar /etc


###################################################
ansible server2 -m unarchive -a 'src=/root/1.tar dest=/tmp/'

shell

执行bash 指令,让目标主机去执行

ansible server2 -m shell -a 'hostname'

ansible server2 -m shell -a 'uptime'

ansible server2 -m shell -a 'yum -y install httpd'


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值