Ansible 快速入门到放弃
Ansible 快速入门到放弃
最是人间留不住,朱颜辞镜花辞树。
1-Ansible 简介
- Ansible是一个配置管理和配置工具,它使用SSH 连接到服务器并运行配置好的任务,服务器上只需要开启ssh,所有工作都交给client 端的ansible 负责。
- 当我们有批量部署的需求时,我们可以自己写脚本,但是更推荐使用 Ansible。使用 Ansible 无需编码只需要配置 yaml 文件,并且 Ansible 已经内置了幂等性、并发度控制等功能,大大减少了批量部署时的工作量。
Ansible 是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible 所运行的模块,ansible只是提供一种框架。主要包括:
- 连接插件connection plugins:负责和被监控端实现通信;
- host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
- 各种模块核心模块、command模块、自定义模块;
- 借助于插件完成记录日志邮件等功能;
- playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
Ansible 特点,主要有以下几点:
- 不需要安装客户端,通过sshd去通信;
- 安装简易,centos上可直接yum安装;
- 基于模块工作,模块可以由任何语言开发;
- 不仅支持命令行使用模块,也支持编写yam l 格式的playbook,易于编写和阅读。
Ansible 大致原理,主要一下三点:
- hosts 配置文件,作用是告诉 Ansible 你的程序要部署到哪些机器。
- yaml 文件,作用是告诉 Ansible 在目标机器上执行哪些操作。
- Ansible 不需要在目标机器上安装客户端,它通过 SSH 把指令和要部署的程序发送到目
2-Ansible 安装
Ansible 支持集群,资源有限本示例仅在本地虚拟机使用两台机器进行演示,角色如下。
- 192.168.8.135 角色-服务端
- 192.168.8.136 角色-客户端
只需要在服务端上安装ansible,安装命令如下。
yum list |grep ansible
或
python3 -m pip install --user ansible==2.5.4
查看安装是否成功
ansible --version
使用ssh-keygen 命令在服务端上生成密钥对。
[tanjintao@localhost ~]$ ssh-keygen -t rsa
建立服务端与客户端的连接,也就是配置密钥认证的SSH连接。
1 [root@localhost ~]# ssh-copy-id root@192.168.8.136 # 拷贝ssh key到客户端
2 /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
3 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
4 /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
5 root@192.168.8.136's password:
6
7 Number of key(s) added: 1
8
9 Now try logging into the machine, with: "ssh 'root@192.168.8.136'"
10 and check to make sure that only the key(s) you wanted were added.
11
12 [root@localhost ~]# ssh root@192.168.8.136 # 测试在服务端上能否通过密钥登录客户端
13 Last login: Tue Feb 21 02:43:53 2023 from 192.168.8.136
14 [root@localhost ~]# logout
15 Connection to 192.168.8.136 closed.
16 [root@localhost ~]#
补充步骤,配置密钥认证的SSH连接。
编辑服务端上的配置文件,配置远程主机组。
# serviceA 是集群名称
[serviceA]
# 枚举 serviceA 集群的 ip 地址,这里配置了一个客户端的IP
192.168.8.136
3-Ansible 执行远程命令1
完成了ssh 密钥认证以及主机组的配置之后就可以通过ansible 对客户端远程执行命令了,但是我这边还是报错UNREACHABLE Permission denied,暂时加上如下配置后可以正常执行远程命令。
[root@flask-mysql ansible]# cat /etc/ansible/hosts
192.168.8.136 ansible_ssh_port=22 ansible_ssh_pass=123456 ansible_ssh_user=root
4-Ansible 执行远程命令2
首先在服务端上创建一个简单的shell 脚本 tjt.sh 用来测试。
#!/bin/bash
echo `date` > /home/tjt/ansible_test.txt
然后把脚本 tjt.sh 分发到远程机器上,具体路径是/home/tjt 目录下。
[root@localhost ~]# ansible serviceA -m copy -a "src=/opt/SERVER/pkg/tjt.sh dest=/home/tjt/tjt.sh mode=0755"
最后通过shell 模块执行远程机器上的shell 脚本。
[root@localhost ~]# ansible serviceA -m shell -a "/home/tjt/tjt.sh"
查看远程机器上,是否执行了 tjt.sh 脚本,并且生成了/home/tjt/ansible_test.txt文件。
如上,可以看到脚本被正常执行了。
5-Ansible 执行 yml 文件
编辑 YAML 文件
- yml 文件是告诉 Ansible 在目标机器上执行哪些操作,Ansible 把这类文件称为 “playbook”。
- playbook 相当于可以把模块命令都写入到配置文件里面,这样就可以直接执行配置文件了,类似脚本的意思。
下面编写一个为名 tjtAnsibleDemo.yml 的 playbook,这个 playbook 的作用是把 helloWorld.java 文件发送到 serviceA 集群。
1 # hosts 是要部署服务的集群
2 - hosts: serviceA
3 # remote_user 是以 root 用户登录远程机器
4 remote_user: root
5 # vars 是定义一些变量。这些变量可以在接下来的 tasks 中使用。
6 vars:
7 src: /opt/SERVER/pkg
8 # tasks 是在远程机器上具体的执行动作。
9 tasks:
10 # name 是该动作的名称
11 - name: "一个简单的Absible脚本:把 helloWorld 文件发送到 serviceA 集群"
12 # copy 是要具体执行的动作。copy 是 Ansible 模块,它的作用是把本地文件上传到目标机器上去。
13 # {{ src }} 是 Jinja2 模板语法
14 copy: src={{ src }}/helloWorld.java dest=/home/tjt
15
16
执行Ansible 脚本
[root@localhost pkg]# ansible-playbook tjtAnsibleDemo.yml
检查远程机器是否成功收到 helloWorld.java 文件。
如上,代表执行成功。
最是人间留不住
朱颜辞镜花辞树
Ansible 快速入门到放弃的更多相关文章
- ansible 快速入门
安装 $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ ...
- Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 【持续集成与交付快速入门必备】
Jenkins 从小白入门到企业实践打怪放弃之路系列笔记 [持续集成与交付快速入门必备]
- kolla-ansible快速入门
kolla-ansible快速入门 kolla-ansible是一个结构相对简单的项目,它通过一个shell脚本,根据用户的参数,选择不同的playbook和不同的参数调用ansible-playbo ...
- 【转】Flask快速入门
迫不及待要开始了吗?本页提供了一个很好的 Flask 介绍,并假定你已经安装好了 Flask.如果没有,请跳转到 安装 章节. 一个最小的应用 一个最小的 Flask 应用看起来会是这样: from ...
- Git快速入门和常用命令
一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...
- 没有基础的初学者学java怎样快速入门?超全的学习路线图
现在地球人都知道互联网行业工资高,上万都是小case,不值一提.可是对于大部分人来说,工资七八千都算很难了.那我也想学java,当程序员,赚大钱.可是作为一个初学者,怎样才可以快速入门呢?早点入门就可 ...
- Vue (一) --- vue.js的快速入门使用
=-----------------------------------把现在的工作做好,才能幻想将来的事情,专注于眼前的事情,对于尚未发生的事情而陷入无休止的忧虑之中,对事情毫无帮助,反而为自己凭添 ...
- vue 快速入门、常用指令(1)
1. vue.js的快速入门使用 1.1 vue.js库的下载 vue.js是目前前端web开发最流行的工具库之一,由尤雨溪在2014年2月发布的. 官方网站 中文:https://cn.vuejs. ...
- jumpservice配置:快速入门
快速入门 说明 到 Jumpserver 会话管理-终端管理 查看 Coco Guacamole 等应用是否在线 一.系统设置 1.1 基本设置 # 修改 url 的"localhost&q ...
- NetCore实践篇:分布式监控客户端ZipkinTracer从入门到放弃之路
前言 本文紧接上篇.Net架构篇:思考如何设计一款实用的分布式监控系统?,上篇仅仅是个思考篇,跟本文没有太大的关系.但有思考,结合现有的开源组件,实践起来更易理解起来,所以看本文之前,应该先看下上篇博 ...
随机推荐
- Java中遇到的常见问题
一.常用的快捷键 查询对应类:Ctrl+N eclipse的快速生成代码:Alt+Shift+s或sources 加单行注释:Ctrl+/ 运行程序:Ctrl+Shift+F10 搜索:Ctrl+ ...
- 【vue3】element-plus,Checkbox-Group多选框之绑定选中数据不选中问题
今天记录一下在新项目vue3中,使用的element-plus组价库遇到的一个问题!场景如下:有一个表格的column绑定的数组对象,我需要对表格的头部实现动态可配置显示表格列,由于绑定的column ...
- 常用函数/异常处理/for循环本质
常用内置函数 1,map() - 映射 格式: map(函数,可遍历对象) 指将遍历的元素挨个取出来做函数的行参传参,得到的返回值全部放回map工厂中,map工厂可以被转换成列表查看到 每一个被函数处 ...
- HMS Core 6.8.0版本发布公告
分析服务 ◆ 游戏行业新增"区服分析"埋点模板及分析报告,支持开发者分服务器查看用户付费.留存等指标,可进一步评估不同服务器的玩家质量: ◆ 新增营销活动报告,可查看广告任务带来的 ...
- Qt多线程开发总览,既然用到了就记录一下
多线程 在LBD_VM_Intercom中使用的一个简单的实例 陶工给的dll需要进行异步操作才可以将视频画面附到窗体上,必须得在画面出现之后才可以附加画面,否则就有可能出现意外bug,所以需要在这个 ...
- 组策略编辑器(gpedit.msc)找不到文件解决方法
打开[此电脑]中的C盘,依次打开Windows-system32-gpedit.msc,或者输入:C:\Windows\System32\gpedit.msc,查看是否存在gpedit.msc文件(没 ...
- JavaScript:七大基础数据类型:大整数bigint
因为数值number有表示范围,所以当我们需要精确表示更大的数字时,我们需要用到大整数bigint: 事实上,大整数可以精确表示任意长度的整数: 我们可以通过在整数的末尾添加字母n,来声明它是一个大整 ...
- 网络监测工具之Zabbix的搭建与测试方法(三) ---Zabbix Agent
安装客户端 在官方网站下载最新版本zabbix agent v6.2.6,然后默认安装,其中配置服务端的界面如下图: 其他一律默认即可. 启用发现功能 如上图所示,开启发现规则,默认搜索zabbix ...
- 来自一位十年.net研发老人的吐血整理:.Net技术栈-网址导航
业余时间为什么整理这个? 内容聚合:不用一个一个搜索,我们很快可以进入常用技术官网 提高效率:多看官方文档可以最快,最准确的掌握相关的技术资讯,不用被一些没理解透或者有偏差的技术分享所带偏. 很多有经 ...
- 主题 2 Shell工具和脚本
主题 2 Shell工具和脚本 Shell 工具和脚本 · the missing semester of your cs education (missing-semester-cn.github. ...