ansible Definition der variable für den timestamp

Ich habe Probleme bei der Einstellung einer variable mit einem Zeitstempel in ansible verwenden Sie es durch mein playbook.
Was ich erreichen will ist, den release-Ordner-name in die zwei Server und eine neue db Tags mit den gleichen timestamp.

Ich bin die Definition dieser Variablen in eine Datei namens common.yml in /ansibleproject/vars/.

timestamp: "{{lookup('pipe', 'date +%Y%m%d%H%M%SZ')}}"
release_name: '{{ repo_tag }}_{{timestamp}}'
new_db_name: '{{release_name}}'

Klicken Sie dann auf task-file, die ich erstellen der dirs so:

- name: "Create new release folder"
  file: path={{new_release_path}} state=directory mode=2775 owner=deployment group=deployment
  become: yes

Und auf einem separaten task-file, die ich erstellen der db so:

- name: "Prepare db user rights"
  shell: echo "CREATE DATABASE \`{{new_db_name}}\` CHARACTER SET utf8 COLLATE utf8_general_ci; " > db_create.sql
  when: inventory_hostname ==  groups['app'][0]

- name: "Create new database for new release"
  shell: mysql -h {{mysql_server}} -u{{mysql_username}} -p{{mysql_password}} < db_create.sql
  when: inventory_hostname ==  groups['app'][0]

Den Ordner erstellt mit dem gleichen Zeitstempel auf den beiden Servern bin ich bereitstellen:

drwxrwsr-x  2 deployment deployment 4096 Mar 14 16:36 test_20170314173640Z/

aber der db-name hat einen anderen Zeitstempel.

mysql> show databases;
+---------------------------------------------------------------+
| Database                                                      |
+---------------------------------------------------------------+
| information_schema                                            |
| dummy                                                         |
| mysql                                                         |
| performance_schema                                            |
| test_20170314173819Z                                          |
+---------------------------------------------------------------+

Ich war Lesung über "set_fact" einen timestamp, aber das scheint zu funktionieren, die auf einem host-basis.

Gibt es eine Möglichkeit zu haben, es konsistent auf beiden Servern und auf der db?

Grüße,

InformationsquelleAutor maudv | 2017-03-14
Schreibe einen Kommentar