Ansible 统计模块不工作

标签 ansible

我在这里需要一些帮助:

我正在使用 Vagrant 创建虚拟机以在其上配置一些集群。对于我想用作 Ansible 控制节点的第一个虚拟机,我从本地计算机运行 Ansible 以在控制节点中安装和配置 Ansible。

当我尝试检查 .inventory 文件是否存在并尝试将该文件复制到主目录(虚拟机内部)时,就会出现问题。

我用于 list 文件的相同命令仅用于检查 .ansible.cfg 文件的统计信息,但不适用于 list 文件。

你们知道我做错了什么吗?

roles/ansible/tasks/main.yml

---
- name: install epel-release
  yum:
    name: epel-release
    state: present

- name: install ansible
  yum:
    name: ansible
    state: present

- name: stat ansible configuration file
  stat:
    path: "{{ cfg_file }}"
  register: stat_ansible_config

- name: copy .ansible.cfg to home directory
  copy:
    src: .ansible.cfg
    dest: /home/{{ user }}/.ansible.cfg
    owner: "{{ user }}"
    group: "{{ group }}"
    mode: 0644
  when: stat_ansible_config.stat.exists

- name: stat ansible inventory file
  stat:
    path: "{{ inventory_file }}"
  register: stat_inventory

- name: copy .inventory to home directory
  copy:
    src: .inventory
    dest: /home/{{ user }}/.inventory
    owner: "{{ user }}"
    group: "{{ group }}"
    mode: 0644
  when: stat_inventory.stat.exists
...

roles/ansible/vars/main.yml

---
user: vagrant
group: vagrant
cfg_file:       /{{ user }}/provision/playbooks/roles/ansible/files/.ansible.cfg
inventory_file: /{{ user }}/provision/playbooks/roles/ansible/files/.inventory
...

剧本:

---
- hosts: controller
  become: yes

  roles:
    - ansible
...

和输出:

TASK [ansible : stat ansible configuration file] *******************************

ok: [controller] => {
    "changed": false,
    "invocation": {
        "module_args": {
            "checksum_algorithm": "sha1",
            "follow": false,
            "get_checksum": true,
            "get_md5": true,
            "mime": false,
            "path": "/vagrant/provision/playbooks/roles/ansible/files/.ansible.cfg"
        },
        "module_name": "stat"
    },
    "stat": {
        "atime": 1485527858.0,
        "checksum": "46acc076fda7e38fd7262fbc88f8ab4e1f52ddca",
        "ctime": 1485452789.0,
        "dev": 38,
        "executable": false,
        "exists": true,
        "gid": 1000,
        "gr_name": "vagrant",
        "inode": 118,
        "isblk": false,
        "ischr": false,
        "isdir": false,
        "isfifo": false,
        "isgid": false,
        "islnk": false,
        "isreg": true,
        "issock": false,
        "isuid": false,
        "md5": "0cb8c97246776dc7e88fe44f19c3278f",
        "mode": "0644",
        "mtime": 1485452789.0,
        "nlink": 1,
        "path": "/vagrant/provision/playbooks/roles/ansible/files/.ansible.cfg",
        "pw_name": "vagrant",
        "readable": true,
        "rgrp": true,
        "roth": true,
        "rusr": true,
        "size": 164,
        "uid": 1000,
        "wgrp": false,
        "woth": false,
        "writeable": true,
        "wusr": true,
        "xgrp": false,
        "xoth": false,
        "xusr": false
    }
}

TASK [ansible : copy .ansible.cfg to home directory] ***************************

ok: [controller] => {
    "changed": false,
    "checksum": "46acc076fda7e38fd7262fbc88f8ab4e1f52ddca",
    "dest": "/home/vagrant/.ansible.cfg",
    "diff": {
        "after": {
            "path": "/home/vagrant/.ansible.cfg"
        },
        "before": {
            "path": "/home/vagrant/.ansible.cfg"
        }
    },
    "gid": 1000,
    "group": "vagrant",
    "invocation": {
        "module_args": {
            "backup": null,
            "content": null,
            "delimiter": null,
            "dest": "/home/vagrant/.ansible.cfg",
            "diff_peek": null,
            "directory_mode": null,
            "follow": false,
            "force": false,
            "group": "vagrant",
            "mode": 420,
            "original_basename": ".ansible.cfg",
            "owner": "vagrant",
            "path": "/home/vagrant/.ansible.cfg",
            "recurse": false,
            "regexp": null,
            "remote_src": null,
            "selevel": null,
            "serole": null,
            "setype": null,
            "seuser": null,
            "src": ".ansible.cfg",
            "state": null,
            "unsafe_writes": null,
            "validate": null
        }
    },
    "mode": "0644",
    "owner": "vagrant",
    "path": "/home/vagrant/.ansible.cfg",
    "secontext": "unconfined_u:object_r:user_home_t:s0",
    "size": 164,
    "state": "file",
    "uid": 1000
}

TASK [ansible : stat ansible inventory file] ***********************************

ok: [controller] => {
    "changed": false,
    "invocation": {
        "module_args": {
            "checksum_algorithm": "sha1",
            "follow": false,
            "get_checksum": true,
            "get_md5": true,
            "mime": false,
            "path": null
        },
        "module_name": "stat"
    },
    "stat": {
        "exists": false
    }
}

TASK [ansible : copy .inventory to home directory] *****************************

task path: /Users/alessandro/Go/src/github.com/alesr/neo4go/provision/playbooks/roles/ansible/tasks/main.yml:31
skipping: [controller] => {
    "changed": false,
    "skip_reason": "Conditional check failed",
    "skipped": true
}

最佳答案

inventory_filemagic variable并由 Ansible 在 playbook 运行期间设置,覆盖您尝试分配的任何值。

在您的 list stat任务中,您可能会注意到:inplication.module_args.path: null

将您的 inventory_file 变量重命名为 my_inventory_file 并且它将起作用。

关于Ansible 统计模块不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41896970/

相关文章:

ansible - 如何按组名引用同一 list 中的其他服务器?

node.js - 解析 block 映射时未找到预期的键

Ansible 组模块

Ansible 模块仅在文件不存在时才创建文件并写入一些数据

ansible - 如果为空或未使用 ansible 定义,则设置变量

unity-game-engine - 重启后继续 Ansible Playbook

Ansible 2.4主机文件警告

ansible - 为 Ansible 中的每个项目打印 shell 输出?

python - "Missing required ' ldap'模块(pip install python-ldap)

Ansible - 替换文件中的行