首页 > 其他分享 >Ansible 快速入门到放弃

Ansible 快速入门到放弃

时间:2023-03-31 20:31:34浏览次数:28  
标签:入门 ansible 192.168 Ansible ssh 放弃 root tjt

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 快速入门到放弃_客户端

只需要在服务端上安装ansible,安装命令如下。

yum list |grep ansible

python3 -m pip install --user ansible==2.5.4

查看安装是否成功

ansible --version

Ansible 快速入门到放弃_客户端_02

使用ssh-keygen 命令在服务端上生成密钥对。

[tanjintao@localhost ~]$ ssh-keygen -t rsa

Ansible 快速入门到放弃_Ansible_03

建立服务端与客户端的连接,也就是配置密钥认证的SSH连接。

Ansible 快速入门到放弃_客户端_04

Ansible 快速入门到放弃_客户端_05

Ansible 快速入门到放弃_Ansible_06

1 [root@localhost ~]# ssh-copy-id [email protected] # 拷贝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 [email protected]'s password: 
 6 
 7 Number of key(s) added: 1
 8 
 9 Now try logging into the machine, with:   "ssh '[email protected]'"
10 and check to make sure that only the key(s) you wanted were added.
11 
12 [root@localhost ~]# ssh [email protected] # 测试在服务端上能否通过密钥登录客户端
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连接。

Ansible 快速入门到放弃_客户端_07

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

# 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

Ansible 快速入门到放弃_Ansible_08

4-Ansible 执行远程命令2

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

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

Ansible 快速入门到放弃_客户端_09

然后把脚本 tjt.sh

[root@localhost ~]# ansible serviceA -m copy -a "src=/opt/SERVER/pkg/tjt.sh dest=/home/tjt/tjt.sh mode=0755"

Ansible 快速入门到放弃_服务端_10

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

[root@localhost ~]# ansible serviceA -m shell -a "/home/tjt/tjt.sh"

Ansible 快速入门到放弃_Ansible_11

 查看远程机器上,是否执行了 tjt.sh 脚本,并且生成了/home/tjt/ansible_test.txt文件。

Ansible 快速入门到放弃_服务端_12

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

5-Ansible 执行 yml 文件

编辑 YAML 文件

  • yml 文件是告诉 Ansible 在目标机器上执行哪些操作,Ansible 把这类文件称为 “playbook”。
  • playbook 相当于可以把模块命令都写入到配置文件里面,这样就可以直接执行配置文件了,类似脚本的意思。

下面编写一个为名 tjtAnsibleDemo.yml 的 playbook,这个 playbook 的作用是把 helloWorld.java 文件发送到 serviceA 集群。

Ansible 快速入门到放弃_客户端_05

Ansible 快速入门到放弃_Ansible_06

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

Ansible 快速入门到放弃_客户端_15

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

Ansible 快速入门到放弃_服务端_16

 如上,代表执行成功。

 

 

 

最是人间留不住

朱颜辞镜花辞树

 

 

 



标签:入门,ansible,192.168,Ansible,ssh,放弃,root,tjt
From: https://blog.51cto.com/u_15459468/6162295

相关文章

  • 【webserver 前置知识 02】Linux网络编程入门其一
    网络结构模式C/S结构服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务。客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。在C/S结构中,应用程序分为两部分:服务器部分和客户......
  • Flask入门
    Flask和pythonweb框架介绍pythonweb框架,本质都一样 -django:大而全,内置的app多,第三方app也多 -flaks:小而精,没有过多的内置组件,值完成web框架最基本的功能,需要借助于第三方,完成更丰富的功能 -web.py:是一个小巧灵活的python框架,它简单而且功能强大(国内几乎没有用......
  • linux下的vim使用教程!从零基础到入门!
    linux下的vim使用教程!从零基础到入门!vim的介绍!Vim是一个类似于vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性vim是一种多模式的编译器!也是在linux下进行编程的一种常用的编辑器!因为其很高的上手难度,也往往让很多新人看了望而却步!今天我将详细的......
  • react 入门
    react三大属性一.状态类组件1.state是组件的属性,值是对象。state中的数据是可读可写的,通过更新state来更新对应的页面显示(重新渲染组件),通过setState来更新state数据且更新是一种合并,在类组件中使用.组件自定义的方法中this为undefined(1)强制绑定this:通过函数对象的bind......
  • ansible 常用模块 service
    模块说明Manageservices参数说明ParameterCommentsargumentsaliases:argsstring命令行上提供了其他参数。将远程主机与systemd一起使用时,此设置将被忽略。enabled boolean服务是否应在启动时启动。至少需要state和enabled中的......
  • ansible 常用模块 archive
    模块说明该unarchive模块解压缩存档。它不会解压缩不包含存档的压缩文件。默认情况下,它会在解包之前将源文件从本地系统复制到目标。设置remote_src=yes为解压缩目标上已存在的存档。在目标主机上需要zipinfo和gtar/unzip命令。需要目标主机上的zstd命令来展开.tar......
  • 1-SpringBoot快速入门
    SpringBoot快速入门1.什么是SpringBoot回顾什么是Spring?Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者:RodJohnson。Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。Spring是如何简化Java开发的?为了降低Java开发的复杂性,Spring采用......
  • ansible 常用模块 user
    模块说明管理用户帐户和用户属性。此模块用于useradd创建、usermod修改和userdel删除帐户。参数ParameterCommentsappend boolean如果true,将用户添加到中指定的组groups。如果false,用户将只被添加到在指定的组中groups,将他们从所有其他组中删......
  • ansible 常用模块 group
    参数参数选项/默认值描述gidinterger 要为组设置的可选GID。localbooleanfalse ←(默认)true强制在实现它的平台上使用“local”命令替代项。这在要操作本地组时使用集中式身份验证的环境中非常有用。(例如,它使用代替lgroupaddgroupadd)。namestr......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能编写Python注释文档字符串从0到1快速入门
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......