ansible、ansible tower的安装以及基本使用
任务目标:
1.linux使用ansible框架写一个示例脚本
2.ansibleui界面调用第一步的脚本执行
目录
- 一、前置说明:
- 名词解释
- 环境说明
- 二、ansible框架
- 安装ansible
- 配置ansible
- 使用ansible执行脚本
- 编写playbook文件并用ansible运行:
- 三、ansible tower可视化界面
- 获取ansible tower的安装包以及解压
- 配置
- 安装
- 登陆可视化界面
- 四、本地脚本导入tower
- 本地准备工作
- 创建本地工程
- tower导入本地工程
- 创建工程
- 主机清单
- 创建模板
- 启动运行
- 补充说明
- 参考链接:
一、前置说明:
本文档主要讲述如何使用ansible以及Tower完成服务器集群的最基础的管理工作。本文基于测试学习环境下使用,所以关闭防火墙等,不配置安全证书等。
名词解释
ansible:是一款运维管理框架,用于操作集群服务使用,方便集群的管理;其最大的特点就是只需要在主操作服务器上安装既可,不需要对被操作服务器进行安装操作。
tower:是ansible框架的一个可视化界面,方便运维管理人员安装使用;它的安装,仅仅在安装了ansible的主操作服务器上安装即可,同样不需要对被操作服务器进行安装操作。
环境说明
我这里是单节点集群,所以这里仅有一台虚拟机用于操作,主要的服务器与被操作服务器都是一台机器;
- linux内核版本
- CentOs版本
ansible版本
ansible tower版本
注意:
- 全程使用root账户操作;
- tower仅支持Centos7.4及以上版本;
- 因为ansible是使用python编写的,所以需要python环境才可以运行,不过本机没有也没关系,因为安装ansible的时候会自动安装。
二、ansible框架
安装ansible
# 安装epel-release扩展源
yum install epel-release -y# 正式下载ansible框架,默认下载了最新版本
yum install -y ansible# 检查是否安装成功,查看ansible版本:
ansible --version
此时代表安装成功!
配置ansible
进入主要的操作目录:
root账号登录ansible机器(也就是主要的机器,操作其它机器的机器),并且进入到ansible目录;
# 进入目录
cd /etc/ansible
2、配置要操作主机的地址:
(配置主机的地址有很多操作,比如按组划分主机等等,这里仅仅以最简单的单主机为例)
进入hosts的文件
# 进入hosts文件添加内容
vim hosts
进行内容编辑,内容如下,添加;
cdh002 ansible_host=192.168.43.19 ansible_port=22 ansible_user=root ansible_password=123456
chd002是主机名称、ansible_host是被操作主机的IP地址,ansible_port是SSH端口,后面两个参数依次为SSH账号和密码:
(我虚拟机的ip=192.168.43.19,所以ansible_host=192.168.43.19
)
3.其它配置
进入ansible.cfg的文件,这是个ansible的配置文件,执行ansible命令时用到,这里面指定了主机信息在hosts文件中查找:
# 进入hosts文件添加内容
vim ansible.cfg# 添加了以下内容,可以关闭安全证书验证;同时将默认注释的inventory内容的注释取消,后面的路径修改为hosts(刚才修改的ansible自己的hosts文件)的路径
[defaults]
host_key_checking = False
使用ansible执行脚本
1、使用ansible执行脚本命令
直接执行脚本,成功则证明ansible运行脚本是可行的
# 成功会打印输出hello world
ansible all -i "localhost," -c local -m shell -a 'echo hello world'
成功!
2、编写了一个shell脚本,并且测试用Linux自身运行这个脚本
# 创建脚本命令
vim test.sh
# 下面是测试脚本的内容,内容为输出一个hello world
echo hello world
# 运行test脚本
./test.sh
提示运行权限不够
运行权限不够,提升权限
# 提升权限命令
chmod 777 test.sh# 运行test脚本
./test.sh
3、现在尝试用ansible来运行test.sh脚本文件
# 执行shell命令
ansible cdh002 -m shell -a './test.sh'
成功,如下图:
编写playbook文件并用ansible运行:
playbook是ansible可操控的文件,用于操控集群,这里编写的palybook将会用于下面tower的测试使用;
1、写一个playbook文件
# 创建hello.playbook文件
vim hello.playbook# 以下为这个文件中的内容,会生成一个日志文件
- hosts: cdh002tasks:- name: say hello taskshell: echo hello world `date` by `hostname` >/tmp/hello.log
刚刚创建的文件:
# 使用ansible运行刚才的playbook文件
ansible-playbook hello.playbook
输出内容如下:
# 查看日志文件
ll /tmp/hello.log# 打印日志文件
cat /tmp/hello.log
成功!
三、ansible tower可视化界面
获取ansible tower的安装包以及解压
(正常下载可能出现网速问题等等不好用,可以直接用下载软件下载到本地,然后放到虚拟机中)
# 安装一些相关的软件
yum -y install vim curl postgresql # 创建下载目录
mkdir /tmp/tower && cd /tmp/tower # 下载安装包 (我由于网络问题,手动下载了ansible-tower-setup-3.4.3-1版本,以下命令默认下载最新版本)
curl -k -O https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz # 解压
tar xvf ansible-tower-setup-latest.tar.gz # 进入到安装目录
cd ansible-tower-setup*/
如果无法下载ansible tower,已经在本人上传资源中提供ansible tower-3.4.3-1版本,也是本文档使用版本。
配置
# 这个是密码,可以自己设定,我这里是123456
sed -i "s#password=''#password='123456'#g" inventory# 这里就是127.0.0.1,不写这个的话还会报错
sed -i "s#host=''#host='127.0.0.1'#g" inventorysed -i "s#port=''#port='5432'#g" inventory
安装
# 添加tower的日志目录否则报错mkdir -p /var/log/tower
# 在解压后的文件夹中,运行安装命令
./setup.sh
# 开始正常安装,安装时间比较长,如果网络较快,速度会相对快点
报错
安装出现了错误(很长)
关键部分摘要:
根据提示知道,最前部分提示了连接超时,最后部分提示提示许可证有问题,了解到这个软件安装是需要校验许可证了,我这里没有校验成功,所以需要手动关闭校验;
解决:
进入这个文件
这里由原本的1置为0就不再检查证书了(?可以检索,set nu 可以显示行号)
然后又有新bug:
# 问题详情如下
fatal: [localhost]: FAILED! => {"msg": "The conditional check 'memcached_conf|changed or memcached_conf_debian|changed' failed. The error was: template error while templating string: no filter named 'changed'. String: {% if memcached_conf|changed or memcached_conf_debian|changed %} True {% else %} False {% endif %}The error appears to be in '/root/ansible-tower-setup-3.4.3-1/roles/memcached/tasks/main.yml': line 37, column 7, but may be elsewhere in the file depending on the exact syntax problem.The offending line appears to be:- name: restart memcached when bind settings changed^ here
"}
# 进入对应文件,注释掉了相关信息:(图中蓝色部分原本是有的,此时我注释掉了)
vim /root/ansible-tower-setup-3.4.3-1/roles/memcached/tasks/main.yml
(蓝色的部分是被我自己手动注销的)
然后再次运行./setip.sh命令安装;
然后安装成功了!
登陆可视化界面
在浏览器地址栏输入虚拟机ip,回车即可(已经默认端口80);
账户密码:admin 123456
成功进入:
四、本地脚本导入tower
有什么用?经过一次创建, 以后就可以一键快速让指定主机做指定的事情;
本地准备工作
先看一下tower的工程目录,towet默认工程目录(tower以前叫awx),其中project目录是tower的主要工作区域
cd /var/lib/awx
要想让我们刚才在本地写的hello.playbook文件可以通过tower操作,我们需要现在本地创建对应的本地工程,接下来讲解!
创建本地工程
由于tower默认的工程工作目录是
所以我们的工程要全部放置在这个目录下/var/lib/awx/projects
;
- 首先在project目录下创建一个我们自己的工作目录
- 然后将我们刚才写的
hello.playbook
文件移动到我们创建的myplaybook
目录下,并且将其名字由hello.playbook
修改为hello.yml
(因为tower不能识别.playbook文件,所以需要改为tower可以识别的.yml文件)
tower导入本地工程
创建工程
这里是添加我们要运行的工程文件所在;
- 首先登陆tower以后,进入project页面,点击
+
号创建工程
- 如下图,其中红色部分是我们要修改的部分。
点击绿色的save
按钮进行保存
主机清单
这是我们要执行命令的服务器列表
- 进入inventories页面,点击
+
号创建工程
- 为服务器清单起名
添加服务器,同样点击右侧的绿色
+
按钮进行添加具体添加服务器的时候内容如下:
点击绿色的save
按钮进行保存
创建模板
模板可以由前面的工程和主机清单任意组合,可以帮助我们快速的让指定的服务器(主机清单里面的服务器)运行指定的工程;
- 如下图,创建模板
- 添加模板时,添加内容
点击绿色的save
按钮进行保存
启动运行
直接依据模板创建job任务(也就是我们的正式的工程)
- 点击小火箭即可启动任务
自动切换到Job页面,运行成功
在job这里可以查看和管理已经启动的任务
目标达成!
补充说明
在主机清单部分,还可以在终端使用命令行进行主机列表的导入;
# 将本地 /etc/ansible下hosts中的主机信息同步tower中
awx-manage inventory_import --exclude-empty-groups --overwrite --overwrite-vars -v 3 --source=/etc/ansible/hosts --inventory-name=host_list
--source
是指ansible的hosts文件。
--inventory-name
是指tower中创建的主机清单。
对awx-manage命令的解释
导入不同主机,上面的命令还需要根据具体需求进行修改
--source 指定inventory文件
--group-filter 从文件中通过组名过滤
--host-filter 通过host name过滤
--inventory-name 导入到指定名称资产清单
--inventory-id 导入到指定ID的资产清单
# name 和 id 选一个--overwrite 覆盖主机和组,默认不覆盖
--overwrite-vars 覆盖主机变量
--keep-vars 保持主机变量--enabled-value 导入的主机状态是否激活默认激活
结束!
参考链接:
ansible安装:
https://www.cnblogs.com/fusheng11711/p/12220932.html
ansible安装以及脚本调用
https://blog.csdn.net/boling_cavalry/article/details/105342744
ansible-tower官方安装指南:
https://docs.ansible.com/ansible-tower/3.6.3/html_zh/quickinstall/index.html
tower基本使用:
https://www.jianshu.com/p/804832965259
tower实战
https://kionf.com/2018/11/21/tower-useage/
ansible、ansible tower的安装以及基本使用相关推荐
- Ansible、Ansible Tower 下载安装
Centos 7 环境下Ansible.Ansible Tower 下载 安装 访问 破解 1.安装环境 CentOS Linux release 7.8.2003 (Core) 最小4G内存,20G ...
- Ansible简单介绍及安装部署详解
ansible简单介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...
- 【Ansible】Ansible控制windows插件安装及运行error与解决方法
一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: ![1_2] 二.问:安装kerberos报错 答:需要先安装libkrb5开发包 ...
- 自动化运维工具Ansible连续剧之--介绍安装与连接
介绍 ansible官方文档里写道 Ansible is a radically simple IT automation engine 即:Ansible是一款极其简单的IT自动化工具 它基于Pyt ...
- Ansible 详细用法部署安装
#一.概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix agentless(无须代理工 ...
- ansible的介绍与安装
Ansible的介绍与安装 文章目录 Ansible的介绍与安装 一.什么是ansible 二.ansible优点 三.ansible管理方式 四.ansible系统架构 五.ansible任务执行模 ...
- Ansible架构介绍与安装
Ansible介绍与安装 一.介绍 Ansible 什么是 Ansible? Ansible是一款自动化运维工具,其主要功能是帮助运维实现IT工作的自动化.降低人为操作失误.提高业务自动化率.提升运维 ...
- Ansible的基本搭建安装与配置及各参数选项的作用
Ansible简介: ansible是什么? ansible是自动化运维工具 自动化运维工具那么多,比如(statstack,puppet,cfengine.chef.func.fabric)为什么, ...
- Ansible——Ansible的练习
Ansible的练习 环境介绍 考试要求 安装和配置 Ansible 解答 验证 创建和运行 Ansible 临时命令 解答 验证 安装软件包 解答 验证 使用 RHEL 系统角色 解答 验证 使用 ...
- Err:1 http://ppa.launchpad.net/ansible/ansible/ubuntu xenial/main i386 ansible all 2.9.1-1ppa~xenial
Err:1 http://ppa.launchpad.net/ansible/ansible/ubuntu xenial/main i386 ansible all 2.9.1-1ppa~xenial ...
最新文章
- Ruby Metaprogramming
- 人工智能专业就业前景如何?
- offsetLeft 、offsetWidth、scrollHeight等的区别
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第6题——扑克排序
- c字符串中包含双引号_码哥学Python,一起解密神秘的字符串密码
- linux如何运行多个硬盘,一个硬盘如何装两个Linux
- 快速幂模板(Python)
- 快速了解前端开发HTML的正确姿势
- SpringBoot 工程目录 整合mybatis-neo4j(注解类型)
- python 常用的几个镜像源
- 推荐一款非常好用的截图工具 - SETUNA2,【订】一下就解决了你做数据对照的麻烦
- 2022.08 VMware官网下载安装+配置Linux虚拟机,最新最全
- 数据字典在mysql中怎么做_如何编写数据字典
- ps的基础知识与教程
- 怎样设置CorelDRAW中的网格参数
- 计算机网络原理——传输层TCP协议的十个重要特性之保证可靠性的机制(确认应答和超时重传)
- IONIC Error“EPERM: operation not permitted, rename 'C:\Users\tad\.config\configstore\cordova-config”
- 简述新图像文件格式——SVG
- python123 第四次作业答案_Python第四次作业——黄亦杨
- 遍历HashMap的几种方法