Ansible Ошибка была: «объект Unicode» не имеет атрибута - PullRequest
1 голос
/ 05 марта 2020

Эй, ребята, может быть, вы можете помочь мне в этой проблеме. Я пытаюсь создать несколько папок в моей роли apache. (Роль изначально была от geerlenguy)

Это моя часть файла Vars для моего хоста:

 apache_vhosts:
  - servername: myhost.com
    documentroot: "/var/www/html/web"
    extra_parameters: |
      <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{HTTPS} off
          RewriteCond %{REQUEST_URI} !^/server-status.*
          RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
      </IfModule>
      <Directory "/var/www/html/web">
        AuthType Basic
        Require valid-user
        AuthName "Please authenticate"
        AuthUserFile /var/www/html/.htpasswd
      </Directory>
  - servername: secondhost.com
    documentroot: "/var/www/learning/web"
    extra_parameters: |
      <IfModule mod_rewrite.c>
          RewriteEngine On
          RewriteCond %{HTTPS} off
          RewriteCond %{REQUEST_URI} !^/server-status.*
          RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
        </IfModule>
      <Directory "/var/www/learning/web">
        AuthType Basic
        Require valid-user
        AuthName "Please authenticate"
        AuthUserFile /var/www/learning/.htpasswd
      </Directory>

My На данный момент задача выглядит так:

- name: Create Apache vhost Folders
  file:
    path: "{{ item.0.documentroot }}"
    state: directory
    mode: '0755'
    owner: root
    group: root
  with_items:
    - apache_vhosts

Но мне кажется, что это выглядит как мусор. Я не могу заставить его работать из-за этой ошибки:

fatal: [webserver.company.com]: FAILED! => {
    "msg": "The task includes an option with an undefined variable. The error was: 'unicode object' has no attribute 'documentroot'

Не могли бы вы, ребята, сказать мне, как правильно получить доступ к documentroot var в моей Задаче? Было бы здорово!

1 Ответ

0 голосов
/ 05 марта 2020

Попробуйте это

- name: Create Apache vhost Folders
  file:
    path: "{{ item.documentroot }}"
    ...
  with_items: "{{ apache_vhosts }}"

Миграция с with_X на l oop

  loop: "{{ apache_vhosts }}"


Пример. Задача
    - debug:
        msg: "{{ item.documentroot }}"
      loop: "{{ apache_vhosts }}"

дает

    "msg": "/var/www/html/web"
    "msg": "/var/www/learning/web"
...