ansible加密

本章主要介绍如何对ansible中的playbook 进行加密。

  • 对整个playbook进行加密
  • 查看加密文件
  • 运行加密的playbook
  • 对playbook进行解密
  • 使用密码文件
  • 对单个字符串进行加密 

前面写了许多playbook,这些playbook都是以明文的方式存在的,有时想对这些 playbook进行加密,可以使用ansible-vault命令来实现。本章实验都在/home/bdqn/demo6下操作,先把demo6目录创建出来并把ansible.cfg 和 hosts拷贝进去,命令如下。 

[bdqn@rhel01 ~]$ mkdir demo6
[bdqn@rhel01 ~]$ cp ansible.cfg hosts demo6/
[bdqn@rhel01 ~]$ cd demo6/
[bdqn@rhel01 demo6]$ ls
ansible.cfg  hosts
[bdqn@rhel01 demo6]$

对整个脚本进行加密 

创建test1.yaml,内容如下。 

[bdqn@rhel01 demo6]$ cat test1.yaml 
---
- hosts: server2gather_facts: falsevars:aa: cisco@123tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$ 

 现在这个文件是以明文的方式存储的,对这个文件进行加密,加密的语法如下。

ansible‐vault encrypt file 

这里的意思是对file文件进行加密,需要按提示输人密码。下面对test1.yaml进行加密,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault encrypt test1.yaml 
New Vault password: 
Confirm New Vault password: 
Encryption successful
[bdqn@rhel01 demo6]$ 

下面查看 testl.yaml的内容,命令如下。 

[bdqn@rhel01 demo6]$ cat test1.yaml 
$ANSIBLE_VAULT;1.1;AES256
33633633653838653963626238306166613732646163343634363430383466356539363664623637
3136393939373439303835366164383862343433313136390a313731636634636131326230323938
30653266373932393665396334633839623033626136313532373638636638303230353438343033
6637346662666532390a633265366161646361666131646336633363303631393633326165363463
30356433386430366434356135353365646435306264353836643861346163633263323933646464
64383030326337326262613432663030666163363265653730636334663631323361666438346232
39653031366239386265323962336231633137356232373434313063383237373636356263633335
30346132656331363766616434313165373665386231313336383431633766346131643735383066
30366634623937386235396437363266323766633434383365373337633634373062646436653634
62636164656164633963623565393831626161343563616566396564316663373530326232343163
353965356638636463366430316235393130
[bdqn@rhel01 demo6]$ 

可以看到,此文件已经是被加密的了。


查看文件内容 

如果要查看加密文件的内容,可以使用ansible-vault view file命令,需要输入解密密码。下面查看 test1.yaml 的内容,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault view test1.yaml 
Vault password: 
---
- hosts: server2gather_facts: falsevars:aa: cisco@123tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$ 

这样就可以看到文件的内容了,但是此文件并没有被解密,依然是加密的文件。 

如果密码输入错误,则看不到文件的内容,如下所示。 

[bdqn@rhel01 demo6]$ ansible-vault view test1.yaml 
Vault password: 
ERROR! Decryption failed (no vault secrets were found that could decrypt) on test1.yaml for test1.yaml
[bdqn@rhel01 demo6]$

运行playbook 

如果直接运行加密后的YAML文件,则会报错,如下所示。 

[bdqn@rhel01 demo6]$ ansible-playbook test1.yaml 
ERROR! Attempting to decrypt but no vault secrets found
[bdqn@rhel01 demo6]$

因为这个playbook是被加密的,要运行它必须输入解密密码才行。在运行时,可以加上- -ask-vault-pass选项提示用户输入解密密码,命令如下。 

[bdqn@rhel01 demo6]$ ansible-playbook --ask-vault-pass test1.yaml 
Vault password: PLAY [server2] *******************************************************************************************************************************************TASK [打印一个变量] ********************************************************************************************************************************************
ok: [server2] => {"msg": "cisco@123"
}PLAY RECAP ***********************************************************************************************************************************************
server2                    : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [bdqn@rhel01 demo6]$ 

这样playbook就可以正常地运行了。

如果要修改加密密码,可以使用ansible-vault rekey file命令来实现,需要先输入一次解密密码,然后输入两次新密码,如下所示。 

[bdqn@rhel01 demo6]$ ansible-vault rekey test1.yaml 
Vault password: 
New Vault password: 
Confirm New Vault password: 
Rekey successful
[bdqn@rhel01 demo6]$ 

这样test1.yaml的加密密码就被更改了。


对脚本进行解密 

如果要对文件进行解密,可以使用ansible-vault decrypt file命令,然后输人解密密码即可对加密文件进行解密。下面对test1.yaml进行解密,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault decrypt test1.yaml 
Vault password: 
Decryption successful
[bdqn@rhel01 demo6]$

输入密码之后提示解密成功。下面查看test1.yaml的内容,命令如下。 

[bdqn@rhel01 demo6]$ cat test1.yaml 
---
- hosts: server2gather_facts: falsevars:aa: cisco@123tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$ 

已经可以正常查看了。


使用密码文件 

加密、解密、查看等操作都需要输入密加里扣密码写人一个文件中,在执行 ansible-vault命令时加上“--vault-id密码文件”选项,即可不需要输人密码了 

先把密码写入aa.xt中,命令如下。

[bdqn@rhel01 demo6]$ echo huawei@123 > aa.txt
[bdqn@rhel01 demo6]$ cat aa.txt 
huawei@123
[bdqn@rhel01 demo6]$

对test1.yaml进行加密,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault encrypt --vault-id aa.txt test1.yaml 
Encryption successful
[bdqn@rhel01 demo6]$

 这里显示加密成功。然后查看test1.yaml的内容,命令如下。

[bdqn@rhel01 demo6]$ cat test1.yaml 
$ANSIBLE_VAULT;1.1;AES256
36383230313333343062656632633761646433383133366464373166336631356661313332643535
3461373630633530373235653035323939623537633533640a393962363937383938383735326463
62373263333065353965633631386335353866383162663534383064363863393065646565366265
3634623630386565370a636139346665356664363837643765376663383166383764653434393562
38323432333665393432623231646333383933363936623836363237663437643932653534356636
39626532643234623961616361396531343935656565373062333935653339376232393636613531
31343164666630323961323237616436346332373634393131663664396133353831393862396335
32316431663234666462326639613030616532643865636330343435363131613539616364616461
66633931353265323062663265356162313362666632616662396636633630396437373138356439
63616633646335393464336566383534393935323335646362616239623639643330656630353036
323532623961386232323431306337646434
[bdqn@rhel01 demo6]$ 

可以看到,已经被加密了。下面通过ansible-vault view查看test1.yaml的内容,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault view --vault-id aa.txt test1.yaml 
---
- hosts: server2gather_facts: falsevars:aa: cisco@123tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$ 

这里会直接读取密码文件中的密码,所以不需要我们再次输入密码。 

加上-vault-id aa.txt选项运行playbook,命令如下。 

[bdqn@rhel01 demo6]$ ansible-playbook --vault-id aa.txt test1.yaml PLAY [server2] *******************************************************************************************************************************************TASK [打印一个变量] ********************************************************************************************************************************************
ok: [server2] => {"msg": "cisco@123"
}PLAY RECAP ***********************************************************************************************************************************************
server2                    : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [bdqn@rhel01 demo6]$ 

此时 playbook也可以正常运行了。解密test1.yaml,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault decrypt --vault-id aa.txt test1.yaml 
Decryption successful
[bdqn@rhel01 demo6]$

可以看到,不需要输入密码,就解密完成了。


对单个字符串进行加密 

可以不对整个文件进行加密,只加密某个字符串,命令如下。 

[bdqn@rhel01 demo6]$ cat test1.yaml 
---
- hosts: server2gather_facts: falsevars:aa: cisco@123tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$

这里变量aa的值为cisco@123,是一个明文,可以单独对字符串cisco@123进行加密,命令如下。 

[bdqn@rhel01 demo6]$ ansible-vault encrypt_string --vault-id aa.txt cisco@123
!vault |$ANSIBLE_VAULT;1.1;AES256383935653861326133333834626238343962303231323065653566633338376631613834326139666162396131623737356234626436633831663439333832660a333064313438666339376563313936386635633232323631303331633235386436323061313230393565306633386261396563646537383537393733323832640a3232366439346665366564323730343033643266383632613636373132386239
Encryption successful
[bdqn@rhel01 demo6]$ 

上面的加粗字就是加密后的密码,因为输出太长,这里用了省略号。 

修改 test1.yaml的内容,把cisco@123换成加密后的密文,内容如下。

[bdqn@rhel01 demo6]$ cat test1.yaml 
---
- hosts: server2gather_facts: falsevars:aa: !vault |$ANSIBLE_VAULT;1.1;AES256383935653861326133333834626238343962303231323065653566633338376631613834326139666162396131623737356234626436633831663439333832660a333064313438666339376563313936386635633232323631303331633235386436323061313230393565306633386261396563646537383537393733323832640a3232366439346665366564323730343033643266383632613636373132386239tasks:- name: 打印一个变量debug: msg="{{aa}}"[bdqn@rhel01 demo6]$ 

需要注意的是,aa后面的这个值不能用引号引起来。

运行此 playbook,并指定密码文件,命令如下。 

[bdqn@rhel01 demo6]$ ansible-playbook --vault-id aa.txt test1.yaml PLAY [server2] *******************************************************************************************************************************************TASK [打印一个变量] ********************************************************************************************************************************************
ok: [server2] => {"msg": "cisco@123"
}PLAY RECAP ***********************************************************************************************************************************************
server2                    : ok=1    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [bdqn@rhel01 demo6]$ 

可以看到,已经正常运行起来了。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用网络教育系统构建个性化学习平台

在现代教育中,网络教育系统作为一种创新的学习方式,为学生提供了更加个性化和灵活的学习体验。在本文中,我们将通过简单的技术代码,演示如何构建一个基础的网络教育系统,为学生提供个性化的学习路径和资源。 1. 环境…

在Go语言中实现HTTP请求的缓存

大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP请求的缓存。听起来是不是很酷?让我们开始吧! 首先,我们要明白什么是缓存。简单来说,缓存就是将数据存储在内存中,…

从 WasmEdge 运行环境读写 Rust Wasm 应用的时序数据

WebAssembly (Wasm) 正在成为一个广受欢迎的编译目标,帮助开发者构建可迁移平台的应用。最近 Greptime 和 WasmEdge 协作,支持了在 WasmEdge 平台上的 Wasm 应用通过 MySQL 协议读写 GreptimeDB 中的时序数据。 什么是 WebAssembly WebAssembly 是一种…

Mysql中 distinct 和 group by 哪个效率高?

结论 先说结论 有索引的情况下:group by和distinct都能使用索引,效率相同 无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort&#xff…

DevC++ easyx 从图片放缩理解双线性插值意义

很久就想实现的一个功能,图片能够拖动,图片能够通过视口局部显示,但是图片放大缩小还是解决。 于是心心念念半年过去了。 恰逢校园地图大作业,按意思来说是可视化,想着能不能改改代码,搓一个地图&#xf…

Flutter配置Android和IOS允许http访问

默认情况下,Android和IOS只支持对https的访问,如果需要访问不安全的连接,也就是http,需要做以下配置。 Android 在res目录下的xml目录中(如果不存在,先创建xml目录),创建一个xml文件network_security_con…

Appium+python自动化(三)- SDK Manager(超详解)

简介 本来宏哥一开始打算用真机做的,所以在前边搭建环境时候就没有下载SDK,但是由于许多小伙伴通过博客发短消息给宏哥留言说是没有真机,所以顺应民意整理一下模拟器,毕竟“得民心者,得天下”。SDK顾名思义&#xff0c…

【Linux学习笔记】Linux下nginx环境搭建

1、下载nginx 安装rpm命令: rpm ivh nginx-release.rpm。(直接使用linux命令下载wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm 2、设置nginx开机启动 chkconfig nginx on 3、开启nginx服务 方法一:service nginx…

引力魔方的基础知识总结

1.简介:引力魔方是投放推荐广告的渠道,融合了钻展和超推;更新升级平台之后统一叫做人群精准推广; 2.展位:包括淘宝首页、内页频道页、门户、帮派、画报等多个淘宝站内广告位 ,每天拥有超过8亿的展现量&…

统一身份认证,构建数字时代的安全壁垒——统一身份认证介绍、原理和实现方法

前言 随着数字化时代的来临,个人和机构在互联网上的活动越来越频繁,对于身份认证的需求也愈发迫切。为了有效应对身份欺诈、数据泄露等问题,统一身份认证(Unified Identity Authentication)应运而生。 在本文博主将介…

快速排序:高效分割与递归,排序领域的王者算法

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《数据结构&算法》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 📋 前言 快速排序这个名词,快排之所以叫快排肯定是有点东西的。他在处理大规模数据集时表现及其…

MySQL数据库编译及安装

将安装mysql 所需软件包传到/opt目录下 cd /opt mysql-5.7.20.tar.gz boost_1_59_0.tar.gz #支持c的运行库 安装环境依赖包 yum -y install \ gcc \ gcc-c \ ncurses \ #字符终端下图形互动功能的动态库 ncurses-devel \ #ncurses开发包 bison \ #语法分析器 cmake #mysql需…

怎么设置Facebook双重验证,让Facebook账号更稳定?

对于跨境电商而言,Facebook 账号被封是常有的事,原因之一可能是没有给 Facebook 设置双重验证,今天就和大家科普一下什么是 Facebook双重验证以及如何设置,另外,作为跨境卖家,我们还需要了解如何保护 Faceb…

Bert-vits2最终版Bert-vits2-2.3云端训练和推理(Colab免费GPU算力平台)

对于深度学习初学者来说,JupyterNoteBook的脚本运行形式显然更加友好,依托Python语言的跨平台特性,JupyterNoteBook既可以在本地线下环境运行,也可以在线上服务器上运行。GoogleColab作为免费GPU算力平台的执牛耳者,更…

视频格式网络地址转换视频到本地,获取封面、时长,其他格式转换成mp4

使用ffmpeg软件转换网络视频,先从官网下载对应操作系统环境的包 注意:网络地址需要是视频格式结尾,例如.mp4,.flv 等 官网地址:Download FFmpeg window包: linux包: 如果下载缓慢,下载迅雷安装使用…

Pycharm2023版本:Python远程调试配置详解

工欲善其事,必先利其器 首先你需要选择一个专业版本的pycharm,社区版本不支持远程配置功能,专业版下载地址:Pycharm 2023 双击程序进行安装,30天内免费试用,如果想要永久使用,办法你懂的&…

GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库

目前,GBASE南大通用已与阿里云计算巢合作,双方融合各自技术优势,助力企业用户实现云上数据仓库的自动化部署,让用户在云端获取数据仓库服务“更简单”,让用户在云端使用数据仓库服务“更便捷”,满足企业用户…

Arm CCA机密计算扩展

目录 Realms Realm World和Root World Arm TrustZone扩展和Arm RME之间有什么区别? 在《什么是机密计算?》中所述,Arm CCA允许您在阻止更高特权软件实体(例如Hypervisor)访问的同时部署应用程序或虚拟机(VM)。然而,通常由这些特权软件实体管理内存等资源。在这种情况…

在Visual Studio(VS)编译器中,Release和Debug区别

一、 优化级别 1、Debug(调试) 在Debug模式下,编译器不会对代码进行优化,而是专注于生成易于调试的代码。这使得开发者可以在调试过程中更直观地跟踪变量的值和程序的执行流程。 2、Release(发布) 在Relea…

CSS3——动画

动画 什么是帧 一段动画,就是一段时间内连续播放n个画面。每一张画面,我们管它叫做“帧”。一定时间内连续快速播放若干个顿,就成了人眼中所看到的动画。同样时间内,播放的帧数越多,画面看起来越流畅。 2.什么是关键…