草庐IT

Ansible 快速入门到放弃

涛姐涛哥 2023-03-28 原文

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 大致原理,主要一下三点:

  1. hosts 配置文件,作用是告诉 Ansible 你的程序要部署到哪些机器。
  2. yaml 文件,作用是告诉 Ansible 在目标机器上执行哪些操作。
  3. 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 ~]#
View Code

补充步骤,配置密钥认证的SSH连接。

编辑服务端上的配置文件,配置远程主机组。

# serviceA 是集群名称
[serviceA]
# 枚举 serviceA 集群的 ip 地址,这里配置了一个客户端的IP
192.168.8.136

3-Ansible 执行远程命令1

完成了ssh 密钥认证以及主机组的配置之后就可以通过ansible 对客户端远程执行命令了,但是我这边还是报错UNREACHABLE Permission denied,暂时加上如下配置后可以正常执行远程命令。

4-Ansible 执行远程命令2

首先在服务端上创建一个简单的shell 脚本 tjt.sh 用来测试。

#!/bin/bash
echo `date` > /home/tjt/ansible_test.txt

然后把脚本 tjt.sh 分发到远程机器上,具体路径是/home/tjt 目录下。

最后通过shell 模块执行远程机器上的shell 脚本。

 如上,可以看到脚本被正常执行了。

编辑 YAML 文件

下面编写一个为名 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
View Code

执行Ansible 脚本

[root@localhost pkg]# ansible-playbook tjtAnsibleDemo.yml 

 检查远程机器是否成功收到 helloWorld.java 文件。

 如上,代表执行成功。

 

 

 

最是人间留不住

朱颜辞镜花辞树

 

 

 
入门Ansiblespanstylecolor其他语言

有关Ansible 快速入门到放弃的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  3. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. ruby - 如何以表格格式快速打印 Ruby 哈希值? - 2

    有没有办法快速将表格格式的ruby​​哈希打印到文件中?如:keyAkeyBkeyC...1232343451253474456...其中散列的值是不同大小的数组。还是使用双循环是唯一的方法?谢谢 最佳答案 试试我写的这个gem(在表中打印散列、ruby对象、ActiveRecord对象):http://github.com/arches/table_print 关于ruby-如何以表格格式快速打印Ruby哈希值?,我们在StackOverflow上找到一个类似的问题:

  6. 电脑启动后显示器黑屏怎么办?排查下面4个问题,快速解决 - 2

    电脑启动出现显示器黑屏是一个相当常见的问题。如果您遇到了这个问题,不要惊慌,因为它有很多可能的原因,可以采取一些简单的措施来解决它。在本文中,小编将介绍下面4种常见的电脑启动后显示器黑屏的原因,排查这些原因,快速解决! 演示机型:联想Ideapad700-15ISK-ISE系统版本:Windows10一、显示器问题如果出现电脑启动后显示器黑屏的情况。那么首先您需要检查一下显示器是否正常工作。您可以通过更换另一个显示器或将当前显示器连接到另一台计算机来检查显示器是否存在问题。如果问题仍然存在,那么您可以排除显示器故障的可能性。 二、显卡问题如果您的电脑配备了独立显卡,那么显卡故障也可能是导致电脑

  7. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  8. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  9. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  10. ruby - 使单元测试快速失败以进行突变测试 - 2

    mutationtesting遇到一个问题是它很慢,因为默认情况下您会为每个生成的突变执行完整的测试运行(测试文件或一组测试文件)。加快突变测试的一种方法是,一旦遇到单一故障(但仅在突变测试期间),就停止对给定突变体的测试运行。更好的做法是让变异测试者记住杀死最后一个变异体的第一个测试是什么,并将其首先交给下一个变异体。ruby中是否有任何东西可以做这些事情,或者我最好的选择是开始猴子修补?(是的,我知道单元测试应该很快。显示所有失败的测试在突变测试之外很有用,因为它不仅可以帮助您识别出问题,还可以查明哪里出了问题)编辑:我目前正在对测试/单元使用heckle。如果测试/单元不可能记住

随机推荐