Неправильный синтаксис yml в сборнике игр ansible

#ansible #yaml

Вопрос:

Кто-нибудь может помочь мне исправить этот сборник пьес:

 ---
- name: Deploying httpd container using GIT Repo for web content - part3
  hosts: Docker-hosts
  tasks:
  - name: Correct python version selected
    community.general.alternatives:
        name: python
        path: /usr/bin/python3
  - name: Install bottle python package
    pip:
        name: docker-py
  - name: pulling docker image
    docker_image:
        name: httpd
        source: pull
  - name: creating a container
    docker_container:
         name: webos
         image: httpd
         volumes:
               -   /root/ansible1/index.html:/usr/local/apache2/htdocs/
         ports:
               -   "82:80"
         state: started
         detach: yes
 

Я получаю эту общую синтаксическую ошибку:

 ERROR! couldn't resolve module/action 'community.general.alternatives'. This often indicates a misspelling, missing collection, or incorrect module path.
The error appears to be in '/etc/ansible/playbooks/Install_Docker_on_Centos8-p3_updated.yml': line 5, column 5, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
  tasks:
  - name: Correct python version selected
    ^ here 
 

Я предполагаю, что это проблема с пространствами, но я не нахожу проблемы
, спасибо

Комментарии:

1. из вашего поста я вижу проблему с пробелами. Вы даете только два пробела, а не 4 или 5 пробелов в аргументе под именем вашего модуля.

2. Хотя интервал нетрадиционен, я не думаю, что это вызывает эту проблему. Какова версия Ansible?

3. Очень вероятно, что коллекция community.general отсутствует. Видеть shell> ansible-galaxy collection list . Если коллекция действительно отсутствует, установите ее shell> ansible-galaxy collection install community.general

4. Привет, Офер Вессбойм, добро пожаловать в SO. Вопрос, который часто кусает новоприбывших в анзибль, что community.general.alternatives: модуль стиль в latest документации, соответственно, только за последний анзибль версии, и поскольку вы не включили версию, которую вы используете, мы не можем сказать точно, но скорее всего, это 2.9 и старше, а значит, вы должны продолжать использовать модули, которые поставляются с установленной версии

5. Моя версия ansible 2.9.23. Я попытался перечислить свою коллекцию по shell> список коллекций ansible-galaxy и установить ее, но только что получил эту ошибку (при попытке установки): «ОШИБКА! Неизвестная ошибка при попытке вызвать Galaxy по адресу ‘ galaxy.ansible.com/api ‘: <ошибка urlopen [Errno -2] Имя или служба неизвестны>»

Ответ №1:

пожалуйста, попробуйте YAML ниже и посмотрите, работает ли он. Я исправил пробелы в файле, я думаю, что это должно сработать. Если проблема все еще сохраняется, пожалуйста, поделитесь версией Ansible, которую вы используете в настоящее время.

 - 
  hosts: Docker-hosts
  name: "Deploying httpd container using GIT Repo for web content - part3"
  tasks: 
    - 
      community.general.alternatives: 
        name: python
        path: /usr/bin/python3
      name: "Correct python version selected"
    - 
      name: "Install bottle python package"
      pip: 
        name: docker-py
    - 
      docker_image: 
        name: httpd
        source: pull
      name: "pulling docker image"
    - 
      docker_container: 
        detach: true
        image: httpd
        name: webos
        ports: 
          - "82:80"
        state: started
        volumes: 
          - "/root/ansible1/index.html:/usr/local/apache2/htdocs/"
      name: "creating a container"
 

Комментарии:

1. это не похоже на формат YAML. Я не понимаю, почему у вас отсутствует — в начале файла и задачи не начинаются с — а также