2017-02-20 28 views
0

Я пытаюсь написать небольшой анзибль-сборник пьес для базовой настройки сервера, но мои задачи из ролей отказываются работать :))анзибль Playbook не запускать задачи из ролей

Playbook имеет такую ​​структуру каталогов:

└── install 
├── group_vars 
│   └── all.yml 
├── roles 
│   ├── basic_setup 
│   │   └── tasks 
│   │    └── main.yml 
│   └── user_management 
│    └── tasks 
│     └── main.yml 
└── setup.yml 

setup.yml выглядит следующим образом:

--- 

- hosts: '{{ target }}' 
    become: yes 
    remote_user: root 
    roles: 
    - { role: basic_setup } 
    - { role: user_management } 

А, к примеру, мой install/roles/basic_setup/tasks/main.yml выглядит следующим образом:

--- 

- name: Install python2.7 
    raw: test -e /usr/bin/python || (apt -y update && apt install -y python-minimal) 
    when: ansible_os_family == "Debian" 

- name: 'test this playbook' 
    shell: "echo 'hello world'" 

Когда я пытаюсь запустить пьес я получаю этот выход:

$ ansible-playbook install/setup.yml --ask-pass --user=root --extra-vars "target=192.168.1.228" -vvv 
Using /etc/ansible/ansible.cfg as config file 
SSH password: 
_____________________ 
< PLAYBOOK: setup.yml > 
--------------------- 
     \ ^__^ 
     \ (oo)\_______ 
      (__)\  )\/\ 
       ||----w | 
       ||  || 

1 plays in install/setup.yml 
____________ 
< PLAY RECAP > 
------------ 
     \ ^__^ 
     \ (oo)\_______ 
      (__)\  )\/\ 
       ||----w | 
       ||  || 

Файл install/roles/user_management/tasks/main.ym л выглядит следующим образом:

--- 

- name: Ensure bogdan user 
    user: 
    name: admin 
    state: present 

- name: Ensure ssh key access 
    authorized_key: 
    key: "{{ lookup('file', key_path) }}" 
    user: admin 
    state: present 

- name: Ensure admin user user is sudoer 
    lineinfile: 
    dest: /etc/sudoers 
    line: "admin ALL=(ALL) NOPASSWD:ALL" 
    regexp: '^admin ALL\=' 
    state: present 
    validate: "visudo -cf %s" 

- name: Create deployer user 
    user: 
    name: deployer 
    state: present 

- name: Ensure ssh key access 
    authorized_key: 
    key: "{{ lookup('file', key_path) }}" 
    user: deployer 
    state: present 

Может кто-то помочь мне понять, что я делаю неправильно?

+0

Можете ли вы отключить cowsay (https://docs.ansible.com/ansible/faq.html#how-do-i-disable-cowsay). –

+0

@techraf, ничего не происходит на удаленном сервере. И локально нет выхода в подарок. Ansible не выводит, сколько заданий запускается, сколько ошибок не было и т. Д. – kitz

+0

@el_wichtel, выход без кошачьих: '$ ansible-playbook install/setup.yml --ask-pass --extra-vars" target = 192.168.1.228 "-vvvvv Использование файла /etc/ansible/ansible.cfg в качестве файла конфигурации Пароль SSH: Загрузка плагина обратного вызова по умолчанию типа stdout, v2.0 из /usr/lib/python2.7/dist-packages/ ansible/plugins/callback/__ init __. pyc PLAYBOOK: setup.yml ********************************** ************************** 1 играет в install/setup.yml PLAY RECAP *********** ************************************************** ******** ' – kitz

ответ

1

Ваша игра в порядке. Проблема заключается в вашем файле команды и инвентаря.

Я никогда не видел, чтобы это работало с указанием IP-адреса для хостов:.

Технически, то, что вы сейчас делаете:

- hosts: '{{ target }}' # 192.168.1.228, comes from command line variable 
    become: yes 
    remote_user: root 

То, что вы должны делать, это есть файл инвентаризации (inventory.ini), который отображает адрес IP-к имени, синтаксис вроде этого:

[your_host] 
192.168.1.228 

пьес остается неизменным, но в командной строке вы:

$ ansible-playbook install/setup.yml --ask-pass --user=root --extra-vars "target=your_host" -vvv 

Какие будет работать. Он также будет работать с использованием имени хоста. (Полное имя хоста в -extra-vars)

Я не уверен, почему у них есть пример IP-адреса в документах.

+0

Спасибо большое :) Это сработало как шарм. – kitz

 Смежные вопросы

  • Нет связанных вопросов^_^