Я пытаюсь включить include_rule, но у меня возникают ошибки из-за неправильного синтаксиса. Это моя файловая структура:
├── roles
│ └── utilities
│ ├── defaults
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ │ └── d_pack.yml
│ ├── templates
│ └── vars
└── test4.yml
правило d_pack.yml
---
- name: Download package
get_url:
url_username:
url_password:
dest:
url:
owner:
group:
test4.yml
---
- name: check if exsist
hosts: localhost
gather_facts: false
tasks:
- debug:
msg: "#################################### INCLUDE START ######################################"
- include_role:
static:no
name:utilities
tasks_from:d_pack
vars:
url_username: "{{ user }}"
url_password: "{{ pass }}"
dest: "{{ ansible_env.APP }}/"
url: "{{ myurl }}"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
- debug:
msg: "#################################### INCLUDE END ######################################"
Я думаю, что следую приведенным здесь примерам:
https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html и здесь:
https://docs.ansible.com/ansible/latest/modules/include_role_module.html
но, тем не менее, я получаю сообщение об ошибке:
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
ERROR! 'name' is a required field for include_role.
The error appears to be in '/home/ec2-user/ansible/test4.yml': line 13, column 11, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- include_role:
^ here
, а также после выполнения правил yml я исправил его:
---
- name: check if exsist
hosts: localhost
gather_facts: false
tasks:
- name: this is test
include_role:
static: no
name: utilities
tasks_from: d_pack
vars:
url_username: "{{ user }}"
url_password: "{{ pass }}"
dest: "{{ ansible_env.APP }}/"
url: "{{ package_url }}"
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
Я все еще получаю эту ошибку: ERROR! Недопустимые параметры для include_role: stati c
The error appears to be in '/home/ec2-user/ansible/test4.yml': line 6, column 8, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
tasks:
- name: this is test
^ here
Update теперь, когда я удалил stati c: no, у меня есть новая ошибка, так как я вижу, что роль оценивает фиктивный сначала параметры, а не тот, который я вводил через include_role
- name: Download package
get_url:
url_username: temp
url_password: tmp
dest: tmp
url: tmp
owner: tmp
group: tmp
<127.0.0.1> EXEC /bin/sh -c 'rm -f -r /home/ec2-user/.ansible/tmp/ansible-tmp-1588762539.1880841-18280-15848856136034/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
File "/********/ansible_get_url_payload_xex4nmel/ansible_get_url_payload.zip/ansible/module_utils/urls.py", line 1494, in fetch_url
unix_socket=unix_socket, ca_path=ca_path)
File "/********/ansible_get_url_payload_xex4nmel/ansible_get_url_payload.zip/ansible/module_utils/urls.py", line 1390, in open_url
unredirected_headers=unredirected_headers)
File "/********/ansible_get_url_payload_xex4nmel/ansible_get_url_payload.zip/ansible/module_utils/urls.py", line 1264, in open
request = RequestWithMethod(url, method, data)
File "/********/ansible_get_url_payload_xex4nmel/ansible_get_url_payload.zip/ansible/module_utils/urls.py", line 643, in __init__
urllib_request.Request.__init__(self, url, data, headers, origin_req_host, unverifiable)
File "/usr/lib64/python3.7/urllib/request.py", line 328, in __init__
self.full_url = url
File "/usr/lib64/python3.7/urllib/request.py", line 354, in full_url
self._parse()
File "/usr/lib64/python3.7/urllib/request.py", line 383, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
fatal: [localhost]: FAILED! => changed=false
invocation:
module_args:
attributes: null
backup: null
checksum: ''
client_cert: null
client_key: null
content: null
delimiter: null
dest: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
directory_mode: null
follow: false
force: false
force_basic_auth: false
group: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
headers: null
http_agent: ansible-httpget
mode: null
owner: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
regexp: null
remote_src: null
selevel: null
serole: null
setype: null
seuser: null
sha256sum: ''
src: null
timeout: 10
tmp_dest: null
unsafe_writes: null
url: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
url_password: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
url_username: temp
use_proxy: true
validate_certs: true
msg: 'unknown url type: ''********'''
status: -1
url: VALUE_SPECIFIED_IN_NO_LOG_PARAMETER
[localhost] TASK: utilities : Download package (debug)> p task.args
{'_ansible_check_mode': False,
'_ansible_debug': False,
'_ansible_diff': False,
'_ansible_keep_remote_files': False,
'_ansible_module_name': 'get_url',
'_ansible_no_log': False,
'_ansible_module_name': 'get_url',
'_ansible_no_log': False,
'_ansible_remote_tmp': '~/.ansible/tmp',
'_ansible_selinux_special_fs': ['fuse',
'nfs',
'vboxsf',
'ramfs',
'9p',
'vfat'],
'_ansible_shell_executable': '/bin/sh',
'_ansible_socket': None,
'_ansible_string_conversion_action': 'warn',
'_ansible_syslog_facility': 'LOG_USER',
'_ansible_tmpdir': '/home/ec2-user/.ansible/tmp/ansible-tmp-1588762539.1880841-18280-15848856136034/',
'_ansible_verbosity': 3,
'_ansible_version': '2.9.7',
'dest': 'tmp',
'group': 'tmp',
'owner': 'tmp',
'url': 'tmp',
'url_password': 'tmp',
'url_username': 'temp'}