使用ansible(HDFS存储)在命令行中创建文件夹
我正在尝试在HDFS存储上创建文件夹结构。我有3个主文件夹,每个都有子文件夹 我在更新子文件夹时遇到问题-我希望执行以下命令使用ansible(HDFS存储)在命令行中创建文件夹,ansible,Ansible,我正在尝试在HDFS存储上创建文件夹结构。我有3个主文件夹,每个都有子文件夹 我在更新子文件夹时遇到问题-我希望执行以下命令 hadoop fs-mkdir/ibm/it hadoop fs-mkdir/ibm/logistic hadoop fs-mkdir/hp hadoop fs-mkdir/dell/it hadoop fs-mkdir/dell/logistic 但是,执行以下命令(我使用debug msg打印失败的第二个任务的命令) 看来我需要在部门上运行一个循环,这是一个字典
- hadoop fs-mkdir/ibm/it
- hadoop fs-mkdir/ibm/logistic
- hadoop fs-mkdir/hp
- hadoop fs-mkdir/dell/it
- hadoop fs-mkdir/dell/logistic
ok: [10.201.51.16] => (item={u'department': [u'it', u'logistic'], u'company_folder_name': u'/ibm'}) => {
"msg": "hadoop fs -mkdir /company//ibm/[u'it', u'logistic']"
}
ok: [10.201.51.16] => (item={u'department': None, u'company_folder_name': u'/hp'}) => {
"msg": "hadoop fs -mkdir /company//hp/"
}
ok: [10.201.51.16] => (item={u'department': [u'it'], u'company_folder_name': u'/dell'}) => {
"msg": "hadoop fs -mkdir /company//dell/[u'it']"
多谢各位
配置文件:
companies:
- company_folder_name: /ibm
department:
- it
- logistic
- company_folder_name: /hp
department:
- company_folder_name: /dell
department:
- it
剧本:
## Createing the main folders - working fine ##
- name: create company folders
shell: hadoop fs -mkdir {{ item.company_folder_name }}
register: result
ignore_errors: yes
with_items:
- "{{ companies }}"
## Create subfolders - Not working ##
- name: create department folders
shell: hadoop fs -mkdir {{ item.company_folder_name }}/{{item.department}}
register: result
ignore_errors: yes
with_items:
- "{{ companies }}"
在创建公司基础目录的第一个任务中,第一部分是正确的 对于下一个,我们首先在列表中选择具有非空
department
字段的对象。下面使用
然后,我们使用循环表在这个列表上循环,所以我们得到每个公司/部门组合的一个迭代
结果手册如下:
---
-主机:本地主机
收集事实:错误
变量:
公司:
-公司\文件夹\名称:/ibm
部门:
-它
-后勤
-公司\文件夹\名称:/hp
部门:
-公司\文件夹\名称:/dell
部门:
-它
任务:
-名称:创建公司文件夹
调试:
msg:“hadoop fs-mkdir{{item.company_folder_name}”
带_项:“{{companys}}”
-名称:创建部门文件夹
调试:
msg:“hadoop fs-mkdir{{item.0.company_folder_name}}/{{item.1}”
带_子元素:
-“{{companys | selectattr('department')| list}”
-系
其中:
PLAY [localhost] ***************************************************************************************************************************************
TASK [create company folders] **************************************************************************************************************************
ok: [localhost] => (item={'company_folder_name': '/ibm', 'department': ['it', 'logistic']}) => {
"msg": "hadoop fs -mkdir /ibm"
}
ok: [localhost] => (item={'company_folder_name': '/hp', 'department': None}) => {
"msg": "hadoop fs -mkdir /hp"
}
ok: [localhost] => (item={'company_folder_name': '/dell', 'department': ['it']}) => {
"msg": "hadoop fs -mkdir /dell"
}
TASK [create department folders] ***********************************************************************************************************************
ok: [localhost] => (item=[{'company_folder_name': '/ibm'}, 'it']) => {
"msg": "hadoop fs -mkdir /ibm/it"
}
ok: [localhost] => (item=[{'company_folder_name': '/ibm'}, 'logistic']) => {
"msg": "hadoop fs -mkdir /ibm/logistic"
}
ok: [localhost] => (item=[{'company_folder_name': '/dell'}, 'it']) => {
"msg": "hadoop fs -mkdir /dell/it"
}
PLAY RECAP *********************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
在创建公司基础目录的第一个任务中,第一部分是正确的 对于下一个,我们首先在列表中选择具有非空
department
字段的对象。下面使用
然后,我们使用循环表在这个列表上循环,所以我们得到每个公司/部门组合的一个迭代
结果手册如下:
---
-主机:本地主机
收集事实:错误
变量:
公司:
-公司\文件夹\名称:/ibm
部门:
-它
-后勤
-公司\文件夹\名称:/hp
部门:
-公司\文件夹\名称:/dell
部门:
-它
任务:
-名称:创建公司文件夹
调试:
msg:“hadoop fs-mkdir{{item.company_folder_name}”
带_项:“{{companys}}”
-名称:创建部门文件夹
调试:
msg:“hadoop fs-mkdir{{item.0.company_folder_name}}/{{item.1}”
带_子元素:
-“{{companys | selectattr('department')| list}”
-系
其中:
PLAY [localhost] ***************************************************************************************************************************************
TASK [create company folders] **************************************************************************************************************************
ok: [localhost] => (item={'company_folder_name': '/ibm', 'department': ['it', 'logistic']}) => {
"msg": "hadoop fs -mkdir /ibm"
}
ok: [localhost] => (item={'company_folder_name': '/hp', 'department': None}) => {
"msg": "hadoop fs -mkdir /hp"
}
ok: [localhost] => (item={'company_folder_name': '/dell', 'department': ['it']}) => {
"msg": "hadoop fs -mkdir /dell"
}
TASK [create department folders] ***********************************************************************************************************************
ok: [localhost] => (item=[{'company_folder_name': '/ibm'}, 'it']) => {
"msg": "hadoop fs -mkdir /ibm/it"
}
ok: [localhost] => (item=[{'company_folder_name': '/ibm'}, 'logistic']) => {
"msg": "hadoop fs -mkdir /ibm/logistic"
}
ok: [localhost] => (item=[{'company_folder_name': '/dell'}, 'it']) => {
"msg": "hadoop fs -mkdir /dell/it"
}
PLAY RECAP *********************************************************************************************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
您的确切问题是什么?第二个任务的输出命令应该是这样的:1.hadoop fs-mkdir/ibm/it 2.hadoop fs-mkdir/ibm/logistic 3.hadoop fs-mkdir/hp 4.hadoop fs-mkdir/dell/it 5.hadoop fs-mkdir/dell/logistic,但我得到的是不同的。我需要环游一下实际上是一本字典的部门。(我使用debug msg–为了打印命令)ok:[10.201.51.16]=>(item={u'department':[u'it',u'logistic'],u'company\u folder\u name':u'/ibm'})=>{msg:“hadoop fs-mkdir/company//ibm/[u'it',u'logistic']”请编辑您的问题并在此处添加此信息。您的确切问题是什么?第二个任务的输出命令应该是这样的:1.hadoop fs-mkdir/ibm/it 2.hadoop fs-mkdir/ibm/logistic 3.hadoop fs-mkdir/hp 4.hadoop fs-mkdir/dell/it 5.hadoop fs-mkdir/dell/logistic,但我得到的是不同的。我需要循环部门实际上是一本字典。(我使用debug msg–为了打印命令)ok:[10.201.51.16]=>(item={u'department':[u'it',u'logistic'],u'company\u folder\u name':u'/ibm'}=>{msg:“hadoop fs-mkdir/company//ibm/[u'it',u'logistic']”请编辑您的问题并在那里添加此信息。