gpt4 book ai didi

linux - 如何将迭代循环列表转换为字符串以在 Linux 中使用

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:12 26 4
gpt4 key购买 nike

我有一个 Ansible 角色,我想迭代它。

目标是从列表中创建新的用户帐户。剧本调用角色并发送列表进行迭代。

操作系统(Linux Debian 8.8)看到所有 var unicode“[u'user']”

执行的一些其他测试显示了新用户:['测试'][u'测试']

我真正想要的只是让 var 成为一个字符串,这样我就创建一个新用户并添加所需的 key 和其他文件。我还可以将 var 添加到 key 和其他文件的路径中。

我正在寻找一种简单的方法来“| to_string”,(不在 Ansible 中)
过滤器“to_yaml”删除了 unicode,但不删除“[]”,并在末尾添加“\n”。

用于各种 id_(type).pub 文件的 ssh key 副本的项目。

我已阅读:

Convert Ansible variable from Unicode to ASCII

代码

Playbook:

vars_files:
- /home/admin/common/vars/UserList

gather_facts: False

roles:
- { role: common, "{{ UserList }}" }
UserList file

---
UserList:
- 'test'
...
role/common/main.yml 

---

- name: Add user to server
user:
name: "{{ UserList }}"
shell: /bin/bash

- name: make direcotry
file:
path: "/home/{{ UserList }}/.ssh"
state: directory

- name: Copy ssh public key to user/.ssh/_key_.pub
copy:
src: "/home/{{ UserList }}/.ssh/{{ item }}"
dest: "/home/{{ UserList }}/.ssh/{{ item }}"
mode: 600
force: no
with_items:
- id_rsa.pub
- id_dsa.pub
- id_ecdsa.pub
...

不同的形式,但仍然出现如下错误。

roles: 
- role: common
with_items:
- "{{ UserList }}"

错误

(item=id_rsa.pub) => {"失败": true, "调用": {"module_args": {"dest": "/home/[u'test']/.ssh/id_rsa.pub", "force": false, "mode": 600, "src": "/home/[u'test']/.ssh/id_rsa.pub"}, "module_name": "复制"}, "item": "id_rsa.pub", "msg": "找不到 src=/home/[u'test']/.ssh/id_rsa.pub"}

最佳答案

解决方法

我找到了解决我的问题的方法。我会谨慎地将其称为解决方案。对于这种情况就足够了。我需要使用内置的 {{ item }} 来“循环”我的 var。然后 {{ item }} 用作字符串,我可以创建我需要的路径。我还可以使用“with_nested”迭代一系列项目。

  - name: create empty file
file:
path: "{{ '/home/' + item + '/.ssh/authorized_keys' }}"
state: touch
with_items:
- "{{ UserList }}"


- name: Copy ssh public key to user/.ssh/_key_.pub
copy:
src: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
dest: "{{ '/home/' + item[1] + '/.ssh/' + item[0] }}"
mode: 600
force: no
with_nested:
- [ 'id_rsa.pub' , 'id_dsa.pub' , 'id_ecdsa.pub' ]
- "{{ UserList }}"

关于linux - 如何将迭代循环列表转换为字符串以在 Linux 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359441/

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