2015-06-05 5 views
7

oynar. Dosya adı aşağıdaki biçimdedir: 2015_06_04_latest_file.csvyanıtlayıcı 'set_fact karşısında ben yyyy_mm_dd biçimde tarih hesaplayın aşağıdaki görevleri</p> <p>1) yürütmek ve sonra benim yerel makineye çenesinde bazı dosya indirmek için bu öneki kullanmak için bir yanıtlayıcı' taktik kitabı yayınlamak zorunda

2) Daha sonra, 2015_06_04 adıyla bir klasörü birden çok ana bilgisayara oluşturmanız ve bu dosyayı buraya yüklemem gerekiyor.

Bu benim şimdiki oyun kitabı olan - set_fact değişkeni yanıtlayıcı 'belgelerine gereğince

--- 
- 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 

, bu değişken LATEST_DATE oyunlarında genelinde mevcut olmalıdır. Ancak, yanıtlayıcı 'ikinci oyun kitabı LATEST_DATE gerçeğinin değeri elde edemiyor gibi gözüküyor şu mesajla

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']) 

ile başarısız olur. Bana nerede hata yaptığımı söyler misin?

cevap

11

Gerçekler ana makineye özgüdür. documentation about set_fact'un belirttiği gibi, "[v] ariables [set_fact ile ayarlanmış] ana makine-ana-tabanlı olarak ayarlanmıştır". Bu gibi Delegation, rolling updates, and local actions tanımlanan

Bunun yerine, run_once kullanmayı deneyin ediyorum: Sen fact-caching sağlayabilir

- hosts: contractsServers 
    tasks: 
    - name: Determine date 
     local_action: shell: date "+%Y_%m_%d" --date="1 days ago" 
     register: yesterday 
     always_run: True 
     changed_when: False 
     run_once: True 
    - name: Do something else locally 
     local_action: ... 
     register: some_variable_name 
     always_run: True 
     changed_when: False 
     run_once: True 

    - name: Do something remotely using the variables registered above 
     ... 
+0

Mükemmel. Teşekkürler, run_once problemimi çözdü. –

2

. Gerçeklerin depolanacağı yerel bir redis örneğini ayarlamanız gerekecektir.

+0

Bunun için teşekkürler. Bunu aslında önbelleğe alma olmadan yapmanın yollarını aradım çünkü bana göre oyunlarda gerçekleri korumak için biraz fazla şey görünüyordu. –

İlgili konular