tôi phải chạy một playbook ansible để thực hiện các nhiệm vụ sauAnsible set_fact qua đóng
1) ngày ở định dạng YYYY_MM_DD Tính và sau đó sử dụng tiền tố này để tải một số tập tin từ AWS để máy tính cục bộ của tôi. Tên tệp có định dạng sau 2015_06_04_latest_file.csv
2) Tôi phải tạo thư mục theo tên 2015_06_04 vào nhiều máy chủ và tải tệp này lên đó.
Đây là playbook hiện tại của tôi -
---
- hosts: 127.0.0.1
connection: local
sudo: yes
gather_facts: no
tasks:
- name: calculate date
shell: date "+%Y_%m_%d" --date="1 days ago"
register: output
- name: set date variable
set_fact: latest_date={{ item }}
with_items: output.stdout_lines
- local_action: command mkdir -p /tmp/latest_contracts/{{ latest_date }}
- local_action: command /root/bin/aws s3 cp s3://primarydatafolder/data/{{ latest_date }}_latest_data.csv /tmp/latest_contracts/{{ latest_date }}/ creates=/tmp/latest_contracts/{{ latest_date }}/latest_data.csv
register: result
ignore_errors: true
- local_action: command /root/bin/aws s3 cp s3://secondarydatafolder/data/{{ latest_date }}_latest_data.csv /tmp/latest_contracts/{{ latest_date }}/ creates=/tmp/latest_contracts/{{ latest_date }}/latest_data.csv
when: result|failed
# remove the date prefix from the downloaded file
- local_action: command ./rename_date.sh {{ latest_date }}
ignore_errors: true
- hosts: contractsServers
sudo: yes
gather_facts: no
tasks:
- name: create directory
file: path={{item.path}} state=directory mode=0775 owner=root group=root
with_items:
- {path: '/var/mukul/contracts/{{ latest_date }}' }
- {path: '/var/mukul/contracts/dummy' }
- name: copy dummy contracts
copy: src=dummy dest=/var/mukul/contracts/
- name: delete previous symlink
shell: unlink /var/mukul/contracts/latest
ignore_errors: true
- name: upload the newly created latest date folder to the host
copy: src=/tmp/latest_contracts/{{ latest_date }} dest=/var/mukul/contracts/
- name: create a symbolic link to the folder on the host and call it latest
action: file state=link src=/var/mukul/contracts/{{ latest_date }} dest=/var/mukul/contracts/latest
Theo tài liệu ansible về biến set_fact, biến LATEST_DATE này nên có sẵn trên vở kịch. Tuy nhiên, ansible không thành công với thông báo sau
failed: [192.168.101.177] => (item={'path': u'/var/mukul/contracts/{# latest_date #}'}) => {"failed": true, "item": {"path": "/var/mukul/contracts/{# latest_date #}"}}
msg: this module requires key=value arguments (['path=/var/mukul/contracts/{#', 'latest_date', '#}', 'state=directory', 'mode=0775', 'owner=root', 'group=root'])
Có vẻ như nếu playbook thứ hai là không thể nhận được giá trị của LATEST_DATE thực tế. Bạn có thể cho tôi biết tôi đang phạm sai lầm ở đâu không?
Hoàn hảo. Cảm ơn, run_once đã giải quyết được sự cố của tôi. –