Как получить значения group_vars при применении другого? [Дубликат]

в моей системе мне пришлось вставить apc.shm_size = 64M в /usr/local/etc/php.ini (FreeBSD 9.1), а затем, когда я посмотрел apc.php (который я скопировал из / usr / local / share / doc / APC / apc.php в / usr / local / www / apache24 / data), я обнаружил, что размер кеша увеличился с 32M до 64M по умолчанию, и я больше не получал большой счетчик кеша

ссылки: http://au1.php.net/manual/en/apc.configuration.php также читали комментарии Бокана, они были очень полезны

23
задан freginold 15 September 2017 в 02:42
поделиться

5 ответов

Учитывая ваш предыдущий пример:

файл инвентаризации:

[db]
10.112.83.37

group_vars / all

data_base_url=jdbc:oracle:thin:@{{ db }}:1521/ssdenwdb

файл шаблона:

oracle_url = {{ data_base_url }}

Возможно, вы захотите заменить group_vars / all на

data_base_url="jdbc:oracle:thin:@{{ groups['db'][0] }}:1521/ssdenwdb"
0
ответ дан Antonio Pérez 15 August 2018 в 23:14
поделиться
- name: host
   debug: msg="{{ item }}" 
   with_items:
    - "{{ groups['tests'] }}"

Этот фрагмент кода даст сообщение:

'10.112.84.122'
'10.112.84.124'

as groups['tests'] в основном возвращает список уникальных IP-адресов ['10.112.84.122','10.112.84.124'], тогда как groups['tomcat'][0] возвращает 10.112.84.124.

22
ответ дан kunicmarko20 15 August 2018 в 23:14
поделиться
  • 1
    мы можем получить доступ к каждому IP-адресу по его индексу, например: {{ groups['lb'][0] }} get 10.112.84.122 в качестве результата. – syodage 18 August 2016 в 21:08

Да пример от nixlike работает очень хорошо.

Инвентарь:

[docker-host]
myhost1 user=barbara
myhost2 user=heather

playbook:

---

- hosts: localhost
  connection: local         

     tasks:    
        - name: loop debug inventory hostnames
          debug: 
            msg: "the docker host is {{ item }}"
          with_inventory_hostnames: docker-host
        - name: loop debug items
          debug: 
            msg: "the docker host is {{ hostvars[item]['user'] }}"
          with_items: "{{ groups['docker-host'] }}"

output:

ansible-playbook ansible / tests / vars-test-local.yml

PLAY [localhost]


TASK [setup] ****************** ************************************************* ОК : [localhost]

TASK [идентификаторы хостов для отладки цикла] ******************************** ********** ok: [localhost] => (item = myhost2) => {"item": "myhost2", "msg": "хост докера - это myhost2"} ok: [localhost] => (item = myhost1) => {"item": "myhost1", "msg": "хост докера - это myhost1"}

TASK [элементы отладки цикла] ******* ************************************************* ОК : [localhost] => (item = myhost1) => {"item": "myhost1", "msg": "хост докера - это barbara"} ok: [localhost] => (item = myhost2) => {" item ":" myhost2 "," msg ":" хост докера - это вереск "}

PLAY RECAP ********************** *********************************************** localhost: ok = 3 changed = 0 unreachable = 0 failed = 0

спасибо!

1
ответ дан nettie 15 August 2018 в 23:14
поделиться

Если вы хотите иметь ваши файлы в файлах под group_vars, просто переместите их здесь. Vars может быть в инвентаре (раздел [ group : vars]), но также (и прежде всего) в файлах под group_vars или hosts_vars.

Например, с помощью пример выше, вы можете переместить ваши vars для группы tests в файле group_vars/tests:

Файл инвентаря:

[lb]
10.112.84.122

[tomcat]
10.112.84.124

[jboss5]
10.112.84.122

...

[tests:children]
lb
tomcat
jboss5

[default:children]
tests

group_vars/tests файл:

data_base_user=NETWIN-4.3
data_base_password=NETWIN
data_base_encrypted_password=
data_base_host=10.112.69.48
data_base_port=1521
data_base_service=ssdenwdb
data_base_url=jdbc:oracle:thin:@10.112.69.48:1521/ssdenwdb
14
ответ дан slm 15 August 2018 в 23:14
поделиться
  • 1
    Спасибо за ваш ответ. Проблема с этим подходом заключается в том, что мне нужно отредактировать оба файла (инвентарь и групповые вары), когда я хочу изменить, например IP-адрес хоста (помните, что в переменных группы есть переменные в группе, которые содержат IP-адрес хоста ). Одно из требований, которое у меня есть, состоит в том, что пользователю нужно только отредактировать файл инвентаризации (добавив IP-адреса хостов), чтобы перенастроить систему или установить ее в другой среде. – Tiago Sousa 20 February 2014 в 17:01
  • 2
    Mmhh, хорошо, но файл инвентаризации, указанный в вашем вопросе, уже решает это и ничего не видит в тестах: vars, который использует информацию сверху, поэтому мне сложно определить, какая проблема должна быть решена, извините: (Не могли бы вы написать то, что хотите в конце (даже если оно не работает), включая файл инвентаризации, файл group_vars / all и небольшую книгу (действие, шаблон)? – leucos 20 February 2014 в 17:41
  • 3
    файл инвентаря: [db] 10.112.83.37 group_vars / all data_base_url = jdbc: oracle: thin: @ {{db}}: 1521 / ssdenwdb playbook: {{data_base_url}} Это очень простой пример, но показывает необходимость использования инвентаря в переменной в group_vars / all. – Tiago Sousa 20 February 2014 в 18:29
  • 4
    И пользователи могут изменять только инвентарь, а не group_vars, не так ли? – leucos 20 February 2014 в 18:35
  • 5
    да это оно. – Tiago Sousa 20 February 2014 в 18:57

Если вы хотите программно получить доступ к инвентарным записям, чтобы включить их в задачу, например. Вы можете ссылаться на него следующим образом:

{{ hostvars.tomcat }}

Это возвращает вам структуру со всеми переменными, связанными с этим хостом. Если вам нужен только IP-адрес (или имя хоста), вы можете ссылаться на него следующим образом:

{{ hostvars.jboss5.ansible_ssh_host }}

Ниже приведен список переменных, к которым вы можете обратиться: щелкните , Кроме того, вы можете объявить переменную и установить ее, например, результат некоторого шага в playbook.

- name: Change owner and group of some file
  file: path=/tmp/my-file owner=new-owner group=new-group
  register: chown_result

Затем, если вы выполните этот шаг на tomcat, вы можете получить доступ к нему из jboss5 например:

- name: Print out the result of chown
  debug: msg="{{ hostvars.tomcat.chown_result }}"
20
ответ дан wpodgorski 15 August 2018 в 23:14
поделиться
  • 1
    Выше не работало для меня. я должен был использовать {{ groups['database'][0] }} для получения первого IP-адреса группы хостов базы данных. – syodage 18 August 2016 в 21:06
  • 2
    В более новых версиях (2.x IIRC) он называется ansible_host вместо ansible_ssh_host. – sjas 4 May 2017 в 08:12
Другие вопросы по тегам:

Похожие вопросы: