微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ansible-动态目录结构创建

如何解决Ansible-动态目录结构创建

我正在尝试从Ansible剧本创建目录结构。有人可以提出解决方法吗?

我的剧本看起来像这样

---
 - name: Install DB2 on RHEL
   hosts: dbserver
   include_vars: main.yml
   tasks: 
          - name: Make additinal  directory structure
            file:
                    state: directory
                    group: db2iadm1
                    owner: db2inst1
                    path: "{{ item.path }}"
            with_items:
                    - { path: "/data1/DB2/tablespaces/{{ dbname }}" }
                    - { path: "/data2/DB2/tablespaces/{{ dbname }}"  }

这是我的var文件

dbname: [db1,db2]

我希望以以下格式创建目录结构

/data1/DB2/tablespaces/db1
/data1/DB2/tablespaces/db2
/data2/DB2/tablespaces/db1
/data2/DB2/tablespaces/db2

但是上述剧本无法正常工作

解决方法

with_nested完成了任务。例如

string OrderBy = "Entity";
var dict = new Dictionary<string,string>();
dict[OrderBy] = "asc";
List<Dictionary<string,string>> list = new List<Dictionary<string,string>>();
list.Add(dict);
var output = new { orderBy = list };
var str = JsonConvert.SerializeObject(output);
Console.WriteLine(str);

给予

    - debug:
        msg: mkdir {{ item.0 }}/{{ item.1 }}
      with_nested:
        - - /data1/DB2/tablespaces
          - /data2/DB2/tablespaces
        - - db1
          - db2

具有变量中数据的相同代码

    "msg": "mkdir /data1/DB2/tablespaces/db1"
    "msg": "mkdir /data1/DB2/tablespaces/db2"
    "msg": "mkdir /data2/DB2/tablespaces/db1"
    "msg": "mkdir /data2/DB2/tablespaces/db2"
,

您正在寻找与product filter中的join类似的东西

- debug:
    msg: mkdir {{ item }}
  with_items: '{{ base_dirs | product(dbname) | map("join","/") | list }}'
  vars:
    base_dirs:
    - /data1/DB2/tablespaces
    - /data2/DB2/tablespaces
    dbname: [db1,db2]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。