Ansible 是一种自动化工具,用于配置管理、应用部署、任务自动化等。它使用 YAML 格式的文件(称为 playbook)来定义任务和配置。CSV(逗号分隔值)文件是一种简单的文本文件,用于存储表格数据。
Ansible 主要有以下几种类型:
假设我们有一个 CSV 文件 data.csv
,内容如下:
Name,Age,City
Alice,30,New York
Bob,25,Los Angeles
我们希望使用 Ansible 将 Bob 的年龄更新为 26。
---
- name: Update CSV file
hosts: localhost
gather_facts: no
vars:
csv_file: data.csv
update_data:
- name: Bob
age: 26
tasks:
- name: Read CSV file
slurp:
path: "{{ csv_file }}"
register: csv_content
- name: Convert slurp output to string
set_fact:
csv_content_str: "{{ csv_content.content | b64decode }}"
- name: Parse CSV content
csv:
fieldnames: Name,Age,City
skipinitialspace: yes
string: "{{ csv_content_str }}"
register: parsed_csv
- name: Update specific cell
set_fact:
updated_csv: "{{ parsed_csv.list | combine({item.0: {'Age': item.1}}) }}"
loop: "{{ update_data }}"
- name: Convert updated CSV to string
set_fact:
updated_csv_str: "{{ updated_csv | csv | b64encode }}"
- name: Write updated CSV to file
copy:
content: "{{ updated_csv_str | b64decode }}"
dest: "{{ csv_file }}"
slurp
模块读取 CSV 文件内容并注册为变量 csv_content
。slurp
输出的二进制内容转换为字符串。csv
模块解析 CSV 内容并注册为变量 parsed_csv
。update_data
变量,更新特定单元格的值。copy
模块将更新后的 CSV 内容写回文件。通过上述步骤,你可以使用 Ansible 更新 CSV 文件中的特定单元格。
领取专属 10元无门槛券
手把手带您无忧上云