从ansible复制模块构建可重用的路径列表

时间:2016-06-14 12:43:58

标签: ansible

给出以下ansible片段:

- name: copy artifact
  copy: src=target/{{ item.artifactId }}-{{ item.version }}.{{ item.type }} dest={{ item.dest }}
  become: yes
  with_items: "{{ gavdeploy_list }}"
  register: artifact

TASK: [gavdeploy | debug msg="{{ artifact }}"] ********************************
ok: [mymachine] => {
        "msg": "{'msg': 'All items completed', 'changed': False, 
'results': [{'group': 'wildfly', 'uid': 11002, 'dest': 
'/opt/wildfly/standalone/deployments/foolistener-1.0.104.war', 
'checksum': '4c110c4833cf37535b37325ef01a4212ed4a14c4', 'changed': False, 
'owner': 'wildfly', 'item': {'endpoint': 'http://localhost:8080/foo-
listener-bot/health', 'group': 'wildfly', 'dest': 
'/opt/wildfly/standalone/deployments', 'version': u'1.0.104', 'owner': 
'wildfly', 'type': 'war', 'groupId': 'company.foo.listener', 
'artifactId': 'foolistener'}, 'state': 'file', 'gid': 11002, 'secontext': 
'system_u:object_r:usr_t:s0', 'mode': '0644', 'invocation': 
{'module_name': u'copy', 'module_complex_args': {}, 'module_args': 
u'src=target/foolistener-1.0.104.war 
dest=/opt/wildfly/standalone/deployments owner=wildfly group=wildfly 
mode=644'}, 'path': '/opt/wildfly/standalone/deployments/foolistener-
1.0.104.war', 'size': 38665931}, 

我可以在-vv输出中看到我们有输出

'path': '/opt/wildfly/standalone/deployments/foolistener-
    1.0.104.war'
'changed': False

如果有人能告诉我一种提取路径和更改字段的方法,我将不胜感激,以这种方式我可以通过jboss-cli重新使用它来执行热部署。

E.g。 (但我在这里深处)

- name: hot deploy
  shell: /path/to/jboss-cli.sh --command "deploy {{ item.path }}"
  with_items: "{{ artefact }}"

如果我能掌握这项工作的基础知识,我可能会想出如何应对变化:我自己是假的还是真的。

1 个答案:

答案 0 :(得分:0)

我认为这可以解决您的问题:

- name: hot deploy
  shell: "/path/to/jboss-cli.sh --command deploy {{ item.item.path }}"
  with_items: "{{ artefact.results }}"

希望能帮助你。