2015-07-30 3 views
0

Моя Ситуация мой сервер базы данных не открыт SSH порт по умолчанию 22, так что я пытаюсь выполнить запрос через порт 3838.Below является код -Как использовать ansible_ssh_port в PlayBook задачи

tasks: 
     - name: passive | Get MasterDB IP 
     mysql_replication: mode=getslave 
     register: slaveInfo 

     - name: Active | Get Variable Details 
     mysql_variables: variable=hostname ansible_ssh_port=3838 
     delegate_to: "{{ slaveInfo.Master_Host }}" 
     register: activeDbHostname   

анзибль версия: - 1.7.2

TASK: [Active | Get Variable Details] ***************************************** 
<192.168.0.110> ESTABLISH CONNECTION FOR USER: root on PORT 22 TO 192.168.0.110 
fatal: [example1.com -> 192.168.0.110] => {'msg': 'FAILED: [Errno 101] Network is unreachable', 'failed': True} 

FATAL: all hosts have already failed -- aborting 

Это соединение по порту по умолчанию 22, а скорее соединение по 3838 порту. Пожалуйста, поделитесь своими мыслями, если я ошибаюсь где-то ...

ответ

2

В ряде мест вы должны указать значение для ansible_ssh_port. Но вы, скорее всего, захотите использовать динамический сценарий инвентаризации.

например. От hosts file:

[db-slave] 
10.0.0.20  ansible_ssh_port=3838 

eg. как переменная в host_vars:

--- 
# host_vars/10.0.0.20/default.yml 
ansible_ssh_port: 3838 

например. в динамическом инвентаре! Вы можете использовать комбо group_vars и мечения экземпляров:

--- 
# group_vars/db-slaves/default.yml 
ansible_ssh_port: 3838 

использование gce.py, ec2.py или некоторых других динамических сценариев инвентаризации и группировать intances в hosts файле:

[tag_db-slaves] 
; this is automatically filled by ec2.py or gce.py 

[db-slaves:children] 
tag_db-slaves 

Конечно, это будет означать, вам нужно пометить экземпляры при их запуске. Вы можете найти несколько dynamic inventory scripts in the ansible repository.

Если ваш mysqld работает на экземпляре docker на том же хосте, я бы рекомендовал вам создать настраиваемый динамический ресурс с определением какой-либо службы, например, с помощью consul, etcd, zookeeper или какого-либо настраиваемого решения с помощью ключа -value store, например redis. Вы можете найти introduction to dynamic inventories in the ansible documentation.

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