首页IT科技ansible怎么使用(Ansible 快速入门到放弃)

ansible怎么使用(Ansible 快速入门到放弃)

时间2025-06-18 10:11:27分类IT科技浏览3894
导读: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   ,安装命令如下                  。

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.136s 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   ,暂时加上如下配置后可以正常执行远程命令   。

[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

View Code

执行Ansible 脚本
[root@localhost pkg]# ansible-playbook tjtAnsibleDemo.yml

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

如上   ,代表执行成功                  。

最是人间留不住

朱颜辞镜花辞树

声明:本站所有文章                  ,如无特殊说明或标注               ,均为本站原创发布   。任何个人或组织,在未征得本站同意时               ,禁止复制         、盗用                  、采集         、发布本站内容到任何网站      、书籍等各类媒体平台            。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理                  。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
qt打包apk(Qt Installer Framework Manual : Qt Installer Framework Manual) mac蓝牙传输文件给电视(苹果Mac系统遇到蓝牙文件传输失败不支持的项该怎么办?)