gpt4 book ai didi

ansible - 在 lineinfile 模块中使用文件名和文件内容的变量

转载 作者:行者123 更新时间:2023-12-03 20:08:52 25 4
gpt4 key购买 nike

我正在尝试读取文件的内容,将它们存储在变量中,然后如果它们不存在,则将它们插入到另一个文件中。

所以,我试图解决这个问题的方法如下:

# Create a variable that represents the path to the file that you want to read from
ssh_public_key_file: '../../jenkins_master/files/{{ hostvars[inventory_hostname]["environment"] }}/id_rsa.pub'

# Create a variable that represents the contents of this file:
ssh_public_key: "{{ lookup('file', '{{ ssh_public_key_file }}') }}"

然后我在我的 Ansible 剧本中使用这些变量,如下所示:
- name: Install SSH authorized key
lineinfile: create=yes dest=~/.ssh/authorized_keys line=" {{ ssh_public_key }}" mode=0644

但是,当我尝试运行 playbook 时,我收到以下错误消息:
could not locate file in lookup: {{ ssh_public_key_file }}

谁能推荐一个解决方案或建议我可能做错了什么?

谢谢,

肖恩

最佳答案

您必须将行更改为:

# Create a variable that represents the contents of this file:
ssh_public_key: "{{ lookup('file', ssh_public_key_file) }}"

如果你需要连接变量和字符串,你可以这样做:
# Example with two variables
ssh_public_key: "{{ lookup('file', var_1+var_2) }}"

# Example with string and variable
ssh_public_key: "{{ lookup('file', '~/config/'+var_1) }}"

. .

关于ansible - 在 lineinfile 模块中使用文件名和文件内容的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28610904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com