前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自动化运维之Ansible的安装部署与命令模块

自动化运维之Ansible的安装部署与命令模块

作者头像
星哥玩云
发布2022-07-28 15:37:11
5040
发布2022-07-28 15:37:11
举报
文章被收录于专栏:开源部署开源部署
  • Ansible简介

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

主要包括:

(1)连接插件connection plugins:负责和被监控端实现通信;

(2)host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)各种模块核心模块、command模块、自定义模块;

(4)借助于插件完成记录日志邮件等功能;

(5)playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

  • 搭建环境

管理端:CentOS7-1 192.168.177.145

被管理端:centos7-2 192.168.177.135

被管理端:centos7-3 192.168.177.132

Ansible安装

192.168.177.145:

代码语言:javascript
复制
# systemctl stop firewalld.service  //关闭防火墙
# setenforce 0
# yum install -y epel-release  //安装epel源
# yum install ansible -y   //安装Ansible
# vim /etc/ansible/hosts 
  [abc]
  192.168.177.135
  [mysql]
  192.168.177.132
# ssh-keygen -t rsa       //设置密钥对
# ssh-copy-id root@192.168.177.135
# ssh-copy-id root@192.168.177.132  //配置密钥对
# ssh-agent bash    //免交互代理
# ssh-add
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块

192.168.177.135(另一台也一样):

代码语言:javascript
复制
# systemctl stop firewalld.service  //关闭防火墙
# setenforce 0
# cd ~/.ssh
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
Ansible命令行模块
command模块

命令格式:ansible [主机] [-m 模块] [-a args]

代码语言:javascript
复制
# ansible 192.168.177.135 -m command -a 'date'   //指定ip执行date
# ansible mysql -a 'date'   //指定分类执行date
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
cron模块

用于定义任务计划

两种状态(state):present表示添加(可以省略),absent表示移除。

代码语言:javascript
复制
# ansible-doc -s cron      //查看cron模块信息
# ansible abc -m cron -a 'minute="*/1" job="/usr/bin/echo nihao" name="test nihao"'  //添加周期性计划任务
# ansible abc -a 'crontab -l'
# ansible abc -m cron -a 'name="test nihao" state=absent'   //移除计划任务,假如该计划任务没有取名字,name=None即可
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
user模块

用于创建新用户和更改删除已存在的用户

user模块是请求的是useradd, userdel, usermod三个指令

代码语言:javascript
复制
# ansible-doc -s user
# ansible mysql -m user -a 'name=zhangsan'  //创建zhangsan
# ansible mysql -m user -a 'name=zhangsan state=absent'   //删除zhangsan
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
group模块

对用户组进行管理

group模块请求的是groupadd, groupdel, groupmod 三个指令

代码语言:javascript
复制
# ansible mysql -m group -a 'name=test gid=306 system=yes'  //创建test组
# ansible mysql -m user -a 'name=wang' //创建用户wang
# ansible mysql -m group -a 'name=test1 gid=506 system=yes'  //创建test1组
# ansible mysql -m user -a 'name=wang uid=506 group=test1 system=yes' //将wang添加到test1组
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
copy模块

用于实现文件复制和批量下发文件

代码语言:javascript
复制
# ansible-doc -s copy
# ansible abc -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=644' //将/etc/fstab复制到被管理端/opt下
# ansible abc -a 'cat /opt/fstab.bk' //查看
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
file模块

用于设置文件属性

代码语言:javascript
复制
# ansible mysql -m file -a 'path=/opt/test.txt state=touch'  //创建空文件
# ansible mysql -m file -a 'path=/opt/test.txt owner=wang group=test1 mode=666'   //设置文件的属主,属组和权限
# ansible mysql -m file -a 'src=/opt/test.txt path=/opt/test.txt.link state=link'  //创建链接性文件
# ansible mysql -m copy  -a 'content="hello" dest=/opt/test.txt'  //在test.txt中写入内容
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
ping模块

用于测试指定主机的连通性

代码语言:javascript
复制
# ansible all -m ping
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
yum模块
代码语言:javascript
复制
# ansible abc -m yum -a 'name=httpd' //yum安装httpd服务
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
service模块

用来控制管理服务的运行状态

代码语言:javascript
复制
# ansible abc -m service -a 'name=httpd enabled=true state=started'  //开机自启动
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
shell模块

在被管理端运行命令

代码语言:javascript
复制
# ansible mysql -m shell -a 'echo "abc123" | passwd --stdin wang'  //创建密码
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
script模块

将本地脚本复制到被管理端运行

代码语言:javascript
复制
# ansible-doc -s script
# vi /opt/test.sh
#!/bin/bash
echo "hello ansible from script"> /opt/script.txt
# chmod +x /opt/test.sh
# ansible mysql -m script -a '/opt/test.sh'
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
setup模块
代码语言:javascript
复制
# ansible mysql -m setup           //获取mysql组主机的facts信息
自动化运维之Ansible的安装部署与命令模块
自动化运维之Ansible的安装部署与命令模块
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Ansible安装
  • Ansible命令行模块
  • command模块
  • cron模块
  • user模块
  • group模块
  • copy模块
  • file模块
  • ping模块
  • yum模块
  • service模块
  • shell模块
  • script模块
  • setup模块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档