- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将列表中的一些文件(在我的变量文件中设置)从我的 Ansible 服务器(Oracle Linux 8.4 上的 Ansible 2.11.2)复制到远程主机(CentOS 7)。
现在我需要在复制后检查所有文件是否都正确复制,并检查每个文件的校验和。
我用于将文件从 Ansible 复制到远程主机的主要任务是:
任务/main.yum:
- name: Jenkins - Configuration | Copy plugin files
copy:
src: "files/plugins/{{item.vars_plugin_name}}"
dest: "{{ vars_jenkins_home }}/plugins/"
owner: jenkins
group: jenkins
loop: "{{ vars_plugin_files }}"
notify: restart-jenkins
这是我的 vars 文件:vars/main.yml
vars_plugin_files:
- vars_plugin_name: ansible.hpi
vars_plugin_checksum: 471787b86173cc6ef0a2243ec12f9a3419d1ac51
- vars_plugin_name: apache-httpcomponents-client-4-api.hpi
vars_plugin_checksum: 2d1b3f9961e5484bb70a45be8deb88d96fc0bf95
- vars_plugin_name: caffeine-api.hpi
vars_plugin_checksum: 69d651b736ee06b18d9b0f3efe332ef0628dee37
- vars_plugin_name: credentials.hpi
vars_plugin_checksum: c93d41e6989319e497dd601295036313b8b666a9
- vars_plugin_name: display-url-api.hpi
vars_plugin_checksum: 4b698121ecda4aa07ef1d80dd50158738949e796
- vars_plugin_name: git-client.hpi
vars_plugin_checksum: 1ec3107ba44f1e98a909101c932f4e478182f02b
- vars_plugin_name: git.hpi
vars_plugin_checksum: 49a35f9f0c27089a1bad3c88311b00728e716cd3
- vars_plugin_name: jsch.hpi
vars_plugin_checksum: d7f8ce10821a5e8f76d7efd8e8aab19d8e914b92
- vars_plugin_name: ldap.hpi
vars_plugin_checksum: 26e3781bba24144efc66da706c6b39cc860b44f8
- vars_plugin_name: mailer.hpi
vars_plugin_checksum: 204c1bd78772a1408142425128de6eaa17813069
- vars_plugin_name: plain-credentials.hpi
vars_plugin_checksum: 1aecd466a0fb1af38917a90ddd8f30dba6309d53
- vars_plugin_name: scm-api.hpi
vars_plugin_checksum: 0e73425e7d07d553ddb637c3b57a3f7cc78d6ff7
- vars_plugin_name: script-security.hpi
vars_plugin_checksum: 2ae3bd3a02124304bbf84f1ec57b14ca44322c21
- vars_plugin_name: ssh-credentials.hpi
vars_plugin_checksum: aa58526e1491a4f44d4a6f7045ab01b6b7564534
- vars_plugin_name: ssh.hpi
vars_plugin_checksum: 9390055b936f3f51f329937dceead7e896a2e23e
- vars_plugin_name: structs.hpi
vars_plugin_checksum: 37b98115acc372cbdc517217ad45c74bd965e570
- vars_plugin_name: trilead-api.hpi
vars_plugin_checksum: 6f440d2136873ce92bbef1e14a878e88c8f9c633
- vars_plugin_name: workflow-scm-step.hpi
vars_plugin_checksum: b4fa0b9a07c0ac36fd502947aa0bb074604ac597
- vars_plugin_name: workflow-step-api.hpi
vars_plugin_checksum: b3eb4f90b8fcccba673cecb3b34cb9a19fa39772
现在,当我使用 var 文件中的列表将文件复制到远程主机上后,如何测试这些文件。我需要执行此操作:
- compare list of files in the remote folder with var list
- compare checksum for each files with var list
感谢您的支持。马可
最佳答案
给定远程主机上的文件
admin@test_11:~ $ find /home/admin/local/jenkins/plugins/ -type f | xargs sha1
SHA1 (/home/admin/local/jenkins/plugins/credentials.hpi) = 5ceb410e2c54743b70ca92392a89dd2946e6f1c7
SHA1 (/home/admin/local/jenkins/plugins/ansible.hpi) = 25ebdd4c915ccb847c95610cea5e2f95fd9e9710
SHA1 (/home/admin/local/jenkins/plugins/caffeine-api.hpi) = fff9d3adfc318729922be735a40e5ff7d17a41b2
和变量
vars_jenkins_home: /home/admin/local/jenkins
vars_plugin_files:
- vars_plugin_name: ansible.hpi
vars_plugin_checksum: 25ebdd4c915ccb847c95610cea5e2f95fd9e9710
- vars_plugin_name: caffeine-api.hpi
vars_plugin_checksum: fff9d3adfc318729922be735a40e5ff7d17a41b2
- vars_plugin_name: credentials.hpi
vars_plugin_checksum: 5ceb410e2c54743b70ca92392a89dd2946e6f1c7
查找包含校验和的文件并创建字典,例如
- hosts: test_11
tasks:
- find:
path: "{{ vars_jenkins_home }}/plugins"
patterns: "*.hpi"
get_checksum: true
register: result
- set_fact:
_dict: "{{ dict(_names|zip(_chcks)) }}"
vars:
_names: "{{ result.files|map(attribute='path')|map('basename')|list }}"
_chcks: "{{ result.files|map(attribute='checksum')|list }}"
给出
ok: [test_11] =>
_dict:
ansible.hpi: 25ebdd4c915ccb847c95610cea5e2f95fd9e9710
caffeine-api.hpi: fff9d3adfc318729922be735a40e5ff7d17a41b2
credentials.hpi: 5ceb410e2c54743b70ca92392a89dd2946e6f1c7
关于如何比较结果有很多选择。例如,创建一个字典并进行比较
- set_fact:
dict_files: "{{ vars_plugin_files|
items2dict(key_name='vars_plugin_name',
value_name='vars_plugin_checksum') }}"
- debug:
msg: "{{ dict_files == _dict }}"
给出
ok: [test_11] =>
msg: true
如果字典不同,您可能需要迭代这些项目,例如
- debug:
msg: "{{ item.vars_plugin_name }} checksum error."
loop: "{{ vars_plugin_files }}"
when: item.vars_plugin_checksum != _dict[item.vars_plugin_name]
关于Ansible:如何从列表中检查远程文件夹中是否存在多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68375306/
我需要将文本放在 中在一个 Div 中,在另一个 Div 中,在另一个 Div 中。所以这是它的样子: #document Change PIN
奇怪的事情发生了。 我有一个基本的 html 代码。 html,头部, body 。(因为我收到了一些反对票,这里是完整的代码) 这是我的CSS: html { backgroun
我正在尝试将 Assets 中的一组图像加载到 UICollectionview 中存在的 ImageView 中,但每当我运行应用程序时它都会显示错误。而且也没有显示图像。 我在ViewDidLoa
我需要根据带参数的 perl 脚本的输出更改一些环境变量。在 tcsh 中,我可以使用别名命令来评估 perl 脚本的输出。 tcsh: alias setsdk 'eval `/localhome/
我使用 Windows 身份验证创建了一个新的 Blazor(服务器端)应用程序,并使用 IIS Express 运行它。它将显示一条消息“Hello Domain\User!”来自右上方的以下 Ra
这是我的方法 void login(Event event);我想知道 Kotlin 中应该如何 最佳答案 在 Kotlin 中通配符运算符是 * 。它指示编译器它是未知的,但一旦知道,就不会有其他类
看下面的代码 for story in book if story.title.length < 140 - var story
我正在尝试用 C 语言学习字符串处理。我写了一个程序,它存储了一些音乐轨道,并帮助用户检查他/她想到的歌曲是否存在于存储的轨道中。这是通过要求用户输入一串字符来完成的。然后程序使用 strstr()
我正在学习 sscanf 并遇到如下格式字符串: sscanf("%[^:]:%[^*=]%*[*=]%n",a,b,&c); 我理解 %[^:] 部分意味着扫描直到遇到 ':' 并将其分配给 a。:
def char_check(x,y): if (str(x) in y or x.find(y) > -1) or (str(y) in x or y.find(x) > -1):
我有一种情况,我想将文本文件中的现有行包含到一个新 block 中。 line 1 line 2 line in block line 3 line 4 应该变成 line 1 line 2 line
我有一个新项目,我正在尝试设置 Django 调试工具栏。首先,我尝试了快速设置,它只涉及将 'debug_toolbar' 添加到我的已安装应用程序列表中。有了这个,当我转到我的根 URL 时,调试
在 Matlab 中,如果我有一个函数 f,例如签名是 f(a,b,c),我可以创建一个只有一个变量 b 的函数,它将使用固定的 a=a1 和 c=c1 调用 f: g = @(b) f(a1, b,
我不明白为什么 ForEach 中的元素之间有多余的垂直间距在 VStack 里面在 ScrollView 里面使用 GeometryReader 时渲染自定义水平分隔线。 Scrol
我想知道,是否有关于何时使用 session 和 cookie 的指南或最佳实践? 什么应该和什么不应该存储在其中?谢谢! 最佳答案 这些文档很好地了解了 session cookie 的安全问题以及
我在 scipy/numpy 中有一个 Nx3 矩阵,我想用它制作一个 3 维条形图,其中 X 轴和 Y 轴由矩阵的第一列和第二列的值、高度确定每个条形的 是矩阵中的第三列,条形的数量由 N 确定。
假设我用两种不同的方式初始化信号量 sem_init(&randomsem,0,1) sem_init(&randomsem,0,0) 现在, sem_wait(&randomsem) 在这两种情况下
我怀疑该值如何存储在“WORD”中,因为 PStr 包含实际输出。? 既然Pstr中存储的是小写到大写的字母,那么在printf中如何将其给出为“WORD”。有人可以吗?解释一下? #include
我有一个 3x3 数组: var my_array = [[0,1,2], [3,4,5], [6,7,8]]; 并想获得它的第一个 2
我意识到您可以使用如下方式轻松检查焦点: var hasFocus = true; $(window).blur(function(){ hasFocus = false; }); $(win
我是一名优秀的程序员,十分优秀!