自动化运维之ansible-安装部署与基础命令篇
一、Ansible简介
Ansible基于Python语言开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能。
二、安装部署Ansible服务
Ansible自动化运维环境由控制主机与被管理主机组成,由于Ansible是基于SSH协议进行通信的,所以控制主机安装Ansible软件后不需要重启或允许任何程序,被管理主机也不需要安装和运行任何应用程序。
Ansible案例环境
角色 | ip地址 | 组名 |
---|---|---|
控制主机 | 192.168.174.209 | |
被管理主机1 | 192.168.174.208 | webservers |
被管理主机2 | 192.168.174.142 | dbservers |
1. 在控制主机上安装epel源
yum install -y epel-release
2.使用yum命令安装Ansible
yum install -y ansible
3.安装tree,展示ansible树状结构
yum install tree -y
4.查看树状结构
tree /etc/ansible/
/etc/ansible/
├── ansible.cfg #ansible的配置文件
├── hosts #ansible的主仓库,用于存储需要管理的远程主机的相关信息
└── roles #角色
5.配置主机清单
vim /etc/ansible/hosts
插入被管理主机的组名,及ip地址[webservers]
192.168.174.208[dbservers]
192.168.174.142
6.设置SSH无密码登录
ssh-keygen -t rsa #基于ssh密钥的连接
在使用ssh-keygen产生一对密钥后,在家目录会产生一个隐藏文件夹.ssh,进入.ssh目录下,使用ssh-copy-id来下发生成的密钥。
ssh-copy-id root@192.168.174.208 #配置密钥对验证
ssh-copy-id root@192.168.174.142
7.使用免交互代理
ssh-agent bash
ssh-add
8.使用ansible命令测试是否安装成功
[root@promote .ssh]# ansible all -a 'date' //查看两台被管理主机的时间
192.168.174.142 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 20:55:39 CST192.168.174.208 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 20:55:39 CST
以上ansible的环境部署就完成了。
三、Ansible基础命令的应用
Ansible可以使用命令方式进行自动化管理,其基本语法为:
ansible <host-pattern> [-m module_name] [-a args]
<host-pattern>被管理的主机的ip或组号
[-m module_name]要使用的哪些模块
[-a args]模块特有的参数
Ansible自带了很多的模块进行对管理主机的各种任务管理。首先来了解一下Ansible常用的一些模块。
1.command模块
Ansible管理工具使用-m选项指定使用的模块,默认使用的是command模块。
(1)使用ip地址指定运行的主机
[root@promote .ssh]# ansible 192.168.174.208 -m command -a 'date'
192.168.174.208 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 21:21:18 CST
(2)使用被管理主机中的分类运行
[root@promote .ssh]# ansible webservers -m command -a 'date'
192.168.174.208 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 21:22:38 CST
(3)在所有被管理主机上运行
[root@promote .ssh]# ansible all -m command -a 'date'
192.168.174.142 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 21:23:28 CST192.168.174.208 | SUCCESS | rc=0 >>
2018年 08月 01日 星期三 21:23:28 CST
2.cron模块
即自定义任务计划模块,用于管理被管理主机的任务计划。cron有两种状态(state):present表示添加(可以省略),absent表示移除。
(1)添加任务计划
ansible webservers -m cron -a 'minute="*/1" job="/bin/echo heihei name="test cron job"'
(2)移除任务计划
移除任务计划是按照指定的任务计划名来执行的,因此必须指定被移除任务计划的名字name,假如该计划任务没有取名字,name=None即可
ansible webservers -m cron -a 'name="test cron job" state=absent'
3.user模块
用于创建新用户和更改、删除已存在的用户。用name指定创建的用户的名称。
(1)创建用户
[root@promote .ssh]# ansible webservers -m user -a 'name=zhangsan'
192.168.174.208 | SUCCESS => {"changed": true, "comment": "", "create_home": true, "group": 1000, "home": "/home/zhangsan", "name": "zhangsan", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1000
}
(2)查看用户是否创建成功
[root@promote .ssh]# ansible webservers -a 'tail -1 /etc/passwd'
192.168.174.208 | SUCCESS | rc=0 >>
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
4.group模块
用于对用户组的管理
#创建mysql组,并将zhangsan用户添加到mysql组
[root@promote .ssh]# ansible webservers -m group -a 'name=mysql gid=306 system=yes'
192.168.174.208 | SUCCESS => {"changed": true, "gid": 306, "name": "mysql", "state": "present", "system": true
}
[root@promote .ssh]# ansible webservers -m user -a 'name=zhangsan uid=307 system=yes group=mysql'
192.168.174.208 | SUCCESS => {"append": false, "changed": true, "comment": "", "group": 306, "home": "/home/zhangsan", "move_home": false, "name": "zhangsan", "shell": "/bin/bash", "state": "present", "uid": 307
}
5.copy模块
实现文件的复制和批量下发文件
#将本地文件/etc/fstab复制到被管理主机的/opt下,取名fstab.bk,并将所有者设置为root,权限设置为666
[root@promote .ssh]# ansible webservers -m copy -a 'src=/etc/fstab dest=/opt/fstab.bk owner=root mode=666'
192.168.174.208 | SUCCESS => {"changed": true, "checksum": "6fb776f669de8f65b92aa2d6975f29d14860e8a9", "dest": "/opt/fstab.bk", "gid": 0, "group": "root", "md5sum": "7f37c08e599574ebb0f41f2f92a54f20", "mode": "0666", "owner": "root", "secontext": "system_u:object_r:usr_t:s0", "size": 465, "src": "/root/.ansible/tmp/ansible-tmp-1533132004.58-223000841853605/source", "state": "file", "uid": 0
}
[root@promote .ssh]# ansible webservers -a 'ls -l /opt'
192.168.174.208 | SUCCESS | rc=0 >>
总用量 4
-rw-rw-rw-. 1 root root 465 8月 1 22:00 fstab.bk
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
6.file模块
用于设置被管理主机的文件属性
#设置/opt/fstab.bk的所属主为mysql,所属组为mysql,权限为644
[root@promote .ssh]# ansible webservers -m file -a 'owner=mysql group=mysql mode=644 path=/opt/fstab.bk'
192.168.174.208 | SUCCESS => {"changed": true, "gid": 306, "group": "mysql", "mode": "0644", "owner": "mysql", "path": "/opt/fstab.bk", "secontext": "system_u:object_r:usr_t:s0", "size": 465, "state": "file", "uid": 306
}
[root@promote .ssh]# ansible webservers -a 'ls -l /opt'
192.168.174.208 | SUCCESS | rc=0 >>
总用量 4
-rw-r--r--. 1 mysql mysql 465 8月 1 22:00 fstab.bk
drwxr-xr-x. 2 root root 6 3月 26 2015 rh
7.ping模块
检测指定被管理主机的连通性
[root@promote .ssh]# ansible webservers -m ping
192.168.174.208 | SUCCESS => {"changed": false, "ping": "pong"
}
8.yum模块
负责在被管理主机上安装与卸载软件包
[root@promote .ssh]# ansible webservers -m yum -a 'name=httpd'
9.service模块
控制管理服务的运行状态
#启动http的服务并设置为开机自启
[root@promote .ssh]# ansible webservers -m service -a 'enabled=true name=httpd state=started'
10.shell模块
Ansible中的shell模块可以在被管理主机上运行命令
使用无交互方式给zhangsan用户设置密码
[root@promote .ssh]# ansible webservers -m shell -a 'echo abc123 | passwd --stdin zhangsan'
192.168.174.208 | SUCCESS | rc=0 >>
更改用户 zhangsan 的密码 。
passwd:所有的身份验证令牌已经成功更新。
11.script模块
将本地脚本复制到被管理主机上进行运行
#编写本机脚本test.sh,复制到被管理主机上进行运行
[root@promote .ssh]# vim test.sh
#!/bin/bash
echo "this is test script" >/opt/fstab.bk
[root@promote .ssh]# chmod +x test.sh #给脚本添加可执行权限
[root@promote .ssh]# ansible webservers -m script -a 'test.sh'
192.168.174.208 | SUCCESS => {"changed": true, "rc": 0, "stderr": "Shared connection to 192.168.174.208 closed.\r\n", "stderr_lines": ["Shared connection to 192.168.174.208 closed."], "stdout": "", "stdout_lines": []
}
[root@promote .ssh]# ansible webservers -a 'cat /opt/fstab.bk'
192.168.174.208 | SUCCESS | rc=0 >>
this is test script
12.setup模块
用于模块收集、查看被管理主机的facts。
[root@promote .ssh]# ansible webservers -m setup
转载于:https://blog.51cto.com/13620954/2153372
自动化运维之ansible-安装部署与基础命令篇相关推荐
- 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客
自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansib ...
- 自动化运维工具Ansible详细部署
一.基础介绍 ================================================================================= 1.简介 ansibl ...
- 自动化运维工具——ansible安装及模块介绍
ansbile 前言 一.主流自动化运维工具简介 1.1 Puppet 1.2 Saltstack 1.3 Ansible 二.Ansible 运维工具原理 三.Ansible安装 3.1 下载软件包 ...
- 自动化运维工具ansible(安装与模块介绍)
自动化运维工具ansible(安装与模块介绍) 一.ansible运维工具概述 (一).ansible的特点 (二).ansible的原理 (三)ansible的优点 二.安装ansible 三.an ...
- 自动化运维工具ansible的安装管理以及模块介绍
自动化运维工具ansible的安装管理以及模块介绍 目录 自动化运维工具ansible的安装管理以及模块介绍 一.ansible概述 1.几种常用运维工具比较 2.Ansible简介 3.Ansibl ...
- Ansible自动化运维工具介绍与部署
ansible自动化运维工具介绍与部署 文章目录 一.什么是自动化运维? 二.常用的自动化运维工具 2.1 Ansible 2.2 SaltStack 2.3 Puppet 2.4 三种自动化工具特点 ...
- 自动化运维工具----ansible
自动化运维工具----ansible ansible是新出现的运维工具是基于Python研发的糅合了众多老牌运维工具的优点实现了批量操作系统配置.批量程序的部署.批量运行命令等功能. 主要模块以及功能 ...
- 自动化运维工具-Ansible的Playbook的使用
Playbook的使用 前言 一.Playbook是什么? 二.playbook使用场景 三.Playbook格式说明 四.Play book变量的使用 1 在主机列表定义变量 2 在playbook ...
- 自动化运维工具-Ansible实战指南
Ansible实战 前言 一.Ansible简介 1.ansible是什么? 2.ansible特点 3.ansible架构 主要模块 工作流程 命令执行过程 二.Ansible 配置 1 安装ans ...
最新文章
- jsoho.com介绍
- 你如果只是一直囤干货,那永远不可能进步
- c:forEach循环的List为String时的写法
- 访百度奥运logo设计师李兴钢:虚实之间最美的呈现
- 中职计算机说课稿三篇,2020精选中职计算机说课稿3篇(15页)-原创力文档
- GDB 调试 .NET 程序实录 - .NET 调用 .so 出现问题怎么解决
- python初中必背语法_一些python语法的合集
- owncloud搭建过程
- 实验二(第一部分,第二部分)
- MySQL数据库——密码遗忘解决方案
- shapley值法初学入门详细介绍
- Windows 利用IIS搭建需要身份验证登录的FTP站点
- python英语词汇读音_Python 将英语单词列表,转换为听写使用的MP3格式(每个单词朗读两遍)...
- PDF合并在电脑上怎样实现?PDF合并的方法有哪些?
- 画仓鼠大赛 结果公布
- scanf(3c,c);
- Vue刷新、跳转页面的数据保存方法: sessionStorage + Object.assign()
- 近期一个称重设备微信端开发前端知识点,及使用插件遇到的常见问题
- 即时通讯云服务免费 破解APP社交化困局
- [ANT]apache ant 安装说明
热门文章
- 配置项、基线以及软件配置控制委员会
- Linux进不了进程,既然在Linux中程序不是进程,那么到底什么才算是进程呢?
- spring boot mybatis 整合_两大热门框架 Spring 与 Mybatis 如何整合呢?
- 带你通俗理解https
- fiddler启用过滤规则只显示想要的接口数据
- 编译器错误~System.Data.Objects.DataClasses.EntityObject在未被引用的程序集中定义
- AGG第四十二课 Blitting an image over another with transparency
- 区分元素特性attribute和对象属性property
- 设置图片和文字的垂直居中
- easyuI企业管理系统-实战二 表格引入json数据