Ansible 是一種開源的自動化工具,廣泛用于自動化部署、配置、管理服務器和應用程序。它可以通過 SSH 或 WinRM(Windows 遠程管理)等協議與服務器進行交互,并允許用戶使用 YAML 這種簡單易讀的語言定義工作流程。
在 Ansible 中,MySQL 是常用的數據庫服務之一。但是,在使用 Ansible 的過程中,我們經常需要寫入 MySQL 數據庫。接下來,我們將分享如何使用 Ansible 將數據寫入 MySQL 數據庫。
- name: Insert data into MySQL table hosts: localhost tasks: - name: Load data into database mysql_db: login_user: root login_password: "{{ vault_db_password }}" db: test_db state: present register: db_check - name: Create a new table mysql_db: login_user: root login_password: "{{ vault_db_password }}" db: test_db name: new_table state: present when: db_check.changed - name: Insert data into the new table mysql_query: login_user: root login_password: "{{ vault_db_password }}" db: test_db query: >INSERT INTO new_table (id, name, age) VALUES (1, 'Tom', 25) when: db_check.changed
在上述例子中,我們將數據插入一個名為 new_table 的表中。我們首先加載一個名為 test_db 的數據庫,檢查該數據庫是否已存在。如果數據庫不存在,則使用 `register: db_check` 語句將 `db_check` 變量注冊為一個檢查項,然后我們可以使用 `when: db_check.changed` 語句來創建數據庫。
創建數據庫后,我們可以使用 `mysql_query` 模塊將數據插入新建的表中。我們將上述代碼保存為 YAML 文件(例如 `insert_into_mysql.yml`),然后在命令行中鍵入以下命令運行 Ansible 任務:
ansible-playbook insert_into_mysql.yml --ask-vault-pass
在運行 Ansible playbook 時,我們需要提供一個 Vault 密碼。這個密碼將用于解密我們存儲在 Ansible Vault 中的數據庫憑證信息。默認情況下,Ansible Vault 會將文件加密,我們需要在 playbook 文件中使用 `ansible-vault encrypt` 命令將其加密。這可以確保將機密信息存儲在安全且受保護的環境中。