Linux之ansible 自动化运维工具
ansible 自动化运维工具 (可以同时控制多台主机做很多事) 基于python语言实现只需要有一个主机 就可以给其他的主机部署任务测试环境:server1 主控端 192.168.109.134server2 控制机 192.168.109.138其他是基于ssh对目标进行管理 所以需要配置ssh的免密码登录特点:1.部署简单 2.基于ssh对目标进行管理3.主从集中化的管理 4.可以通过py
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)