Ansible - невозможно создать скрытый файл через скрипт - PullRequest
0 голосов
/ 25 февраля 2019

Я изучаю Ansible, и как часть моего учебного упражнения я написал ANSIBLE Playbook, которая выполняет следующие действия:

  • Настройка структуры каталогов резервного копирования базы данных MySQL на удаленных серверах в соответствии с нашим требованием
  • копирует некоторые сценарии на удаленные серверы
  • Запускает сценарий создания базы данных / пользователя на удаленных серверах

Все отлично работает, кроме двух вещей -

  1. Сценарий создания базы данных / пользователя требует наличия пароля пользователя root mysql, который, если я запускаю локально, выдает запрос на ввод во время выполнения.Тем не менее, при удаленном запуске с ansible, сервер не запрашивает пароль и скрипт завершается неудачно.В качестве обходного пути я жестко кодирую пароль в скрипте на удаленном сервере, и он отлично работает.

  2. Внутри этого скрипта я создаю скрытый файл.Опять же, при локальном запуске скрытый файл создается, но с удаленного сервера, кажется, команда для создания скрытого файла игнорируется

---
- hosts: database-servers
  tasks:
  - name: create directories, if not existing
    file:
      path: "{{ item }}"
      state: directory
      mode: 0775
    become: yes
    become_user: mysql
    with_items:
    - /my/location/backups/db1
    - /my/location/scripts
    - /my/location/backups/db2
    - /my/location/log
    - /my/location/bk/scripts
  - name: copy files to db servers
    copy:
      src: "{{ item }}"
      dest: "/my/location/scripts"
      mode: 0755
    become: yes
    become_user: mysql
    with_fileglob:
      - "/my/location/scripts/*.sh"
  - name: run script with argument
    script: /my/location/scripts/createDbUser.sh --host=localhost --database=testdb --user=test

Код, который используется для создания скрытого файла :-

CRED_FIL="/some/location/scripts/.selp"
BACK_PASS=$(generatePassword)!
--
--
--
function createBackupUserCredentialFile()
{
  if [[ ! -e ${CRED_FIL} ]]; then
    echo ${BACK_PASS} > ${CRED_FIL}
    chmod 640 ${CRED_FIL}
    _success "Credential file created.."
  else
    _success "Credential file existing. No change is made"
  fi
}
...