Ansible 是一種開源的自動(dòng)化工具,廣泛用于自動(dòng)化部署、配置、管理服務(wù)器和應(yīng)用程序。它可以通過 SSH 或 WinRM(Windows 遠(yuǎn)程管理)等協(xié)議與服務(wù)器進(jìn)行交互,并允許用戶使用 YAML 這種簡(jiǎn)單易讀的語言定義工作流程。
在 Ansible 中,MySQL 是常用的數(shù)據(jù)庫服務(wù)之一。但是,在使用 Ansible 的過程中,我們經(jīng)常需要寫入 MySQL 數(shù)據(jù)庫。接下來,我們將分享如何使用 Ansible 將數(shù)據(jù)寫入 MySQL 數(shù)據(jù)庫。
- 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
在上述例子中,我們將數(shù)據(jù)插入一個(gè)名為 new_table 的表中。我們首先加載一個(gè)名為 test_db 的數(shù)據(jù)庫,檢查該數(shù)據(jù)庫是否已存在。如果數(shù)據(jù)庫不存在,則使用 `register: db_check` 語句將 `db_check` 變量注冊(cè)為一個(gè)檢查項(xiàng),然后我們可以使用 `when: db_check.changed` 語句來創(chuàng)建數(shù)據(jù)庫。
創(chuàng)建數(shù)據(jù)庫后,我們可以使用 `mysql_query` 模塊將數(shù)據(jù)插入新建的表中。我們將上述代碼保存為 YAML 文件(例如 `insert_into_mysql.yml`),然后在命令行中鍵入以下命令運(yùn)行 Ansible 任務(wù):
ansible-playbook insert_into_mysql.yml --ask-vault-pass
在運(yùn)行 Ansible playbook 時(shí),我們需要提供一個(gè) Vault 密碼。這個(gè)密碼將用于解密我們存儲(chǔ)在 Ansible Vault 中的數(shù)據(jù)庫憑證信息。默認(rèn)情況下,Ansible Vault 會(huì)將文件加密,我們需要在 playbook 文件中使用 `ansible-vault encrypt` 命令將其加密。這可以確保將機(jī)密信息存儲(chǔ)在安全且受保護(hù)的環(huán)境中。