Linux之ansible 自动化运维工具

ansible  自动化运维工具  (可以同时控制多台主机做很多事) 基于python语言实现

只需要有一个主机 就可以给其他的主机部署任务

测试环境:

server1  主控端   192.168.109.134

server2  控制机   192.168.109.138

其他是基于ssh对目标进行管理  所以需要配置ssh的免密码登录

特点:1.部署简单   2.基于ssh对目标进行管理 

3.主从集中化的管理  4.可以通过python进行api拓展  5.可以服务于云计算大数据平台

1.部署

主控端处

setenforce 0
systemctl stop firewalld
yum -y install epel-release.noarch
yum -y install ansible
ls /etc/ansible/
ansible.cfg是其配置文件
hosts是要控制的目标   
roles是一个空的目录  后期用来存放剧本的

接下来做ssh的认证  配置ssh的免密码登录

ssh-keygen -t rsa
空密码
ssh-copy-id -i ./.ssh/id_rsa.pub root@[目标ip地址]
输入目标的登录密码即可
ssh root@[目标ip地址]

#此时已经可以实现免密码登录   因为空密码的密钥认证文件已经写到了目标计算机中

接下来需要添加被管理/控制的主机

vi /etc/ansible/hosts

客户机处

setenforce 0
systemctl stop firewalld

2.ansible常用模块

ansible client -m ping   #测试client组是否可以ping通
ansible-doc -i   #可以看到ansible支持的模块 按q可以结束

如上图所示 表名客户端/受控端成功

 

 

命令控制模块  

在目标上执行命令
ansible client -m command -a "whoami"
ansible client -m command -a "pwd"
ansible client -m command -a "mkdir haha"
ansible client -m command -a "rm -rf ./haha"
touch test1.sh
nano test1.sh
-----------
ifconfig
mkdir nihao
-----------
ansible client -m script -a "./test1.sh"  #远程主机执行本机sh的命令
#控制目标在目标上执行目标的sh文件  接下来进入server2去实验
touch test2.sh
vi test2.sh
-------
mkdir test2
-------
chmod 777 test2.sh
接下来回到server1
ansible client -m shell -a "./test2.sh"

 

 

拷贝模块

src是自己控制机器的目录文件  dest是目标受控机器的文件位置

#把自己本机的文件发送到目标组内的所有主机 并且赋予相应的权限
ansible client -m copy -a "src=./test1.sh dest=/tmp/ owner=root group=root mode=0755"

文件状态模块

ansible client -m stat -a "path=/etc/passwd"  #获取/etc/passwd的文件状态

 

实现远程的下载

可以使用指定的地址去下载   force是覆盖与否

ansible client -m get_url -a "url=http://www.baidu.com dest=/root/index.html mode=0440 force=yes"

此时目标位置已经把百度的index.html成功进行了下载

 

软件包的管理  远程更新软件

可以让目标去远程更新软件

curl http://www.baidu.com
ansible client -m yum -a "name=curl state=latest"

进行crontab配置(可以做一个计划任务的定时)

双引号包单引号就行 不能重复双引号

ansible client -m cron -a "name='shijian1' hour='1,2' job='mkdir haha'"
crontab -l

 

远程服务的管理

ansible client -m service -a "name=nginx state=restart"

用户管理服务  使用user模块去自动添加用户

ansible client -m user -a "name=xiaoming comment='wo shi xiaoming'"
ansible client -m user -a "name=user1 password=123456 home=/home/user1 uid=1123 group=test1 comment='woshiuser1' system=yes"

删除系统用户  彻底删除 比较干净

ansible client -m user -a "name=user1 state=absent remove=yes"

基于yaml语法实现ansible剧本编写

yaml语法一般是用来编写playbooks  结尾是yml文件格式

特点:和python一样必须要对齐  而且只能用空格 不能用tab

核心组件:

1.tasks 任务

2.variables 变量

3.templates 模板

4.handlers 处理器

5.roles 角色

vi /root/t1.yml
- hosts: all
  remote_user: root
  vars: httpd_port=80
  
  tasks:
  - name:anzhuang httpd
    yum:name=httpd state=present
  - name:anzhuang php
    yum: name=php state=present
  - name:qidong apache
    service: name=httpd state=started enabled=true

vi /root/t2.yml
- host: client
  remote_user: root
  vars:
    username: user1
    password: 123456

  tasks:
  - name: tianjia yonghu
    user: name={{ username }} state=present
  - name: tianjia mima
    shell: echo {{ password }} | passwd --stdin {{ username }}
ansible-playbook t2.yml --syntax-check   #检查是否语法出错
ansible-playbook t2.yml   #使用剧本去执行yml文件

vi /root/t3.yml
  - name: baohan
    hosts:client
    remote_user: root

    tasks:
    - include_tasks: /root/t2.yml
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simon_Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值