2014-10-06 7 views
2

Я хочу, чтобы другой пользователь был использован на платформе, из которой запускается незанятая пьеса.Необязательный условный пользователь, основанный на платформе

Например, у меня есть сборник пьес, как это:

--- 
- hosts: all 
    user: deploy 
    tasks: 
    - name: hello world 
    shell: echo "Hello World" 

Я хочу, чтобы пользователь будет «развернуть», когда работала на RedHat, а переменная $ USER окружающей среды на систему Darwin/Mac.

Как бы это установить?

ответ

5

Существует отличный вопрос на serverfault, который отвечает на это несколькими способами: ansible playbook, different user by operating system, но это не дубликат, потому что это другая «доска».

Это также главный вопрос в FAQ Ansible, How do I handle different machines needing different user accounts or ports to log in with?, который предлагает поместить его в файл хоста с помощью ansible_ssh_user.

"Ansible best practices" file suggests using group_vars, что является самым чистым вариантом.

Для тривиальных случаев, вы можете также выборочно запускать задачи:

- name: run this on debian type systems 
    debug msg="hello from debian" 
    sudo: yes 
    sudo_user: ubuntu 
    when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu' 

- name: run this on OSX type systems 
    sudo: yes 
    sudo_user: "{{ lookup('env','USER') }}" 
    debug: msg="hello from osx" 
    when: ansible_distribution == 'MacOSX' 
+0

Я нашел 'ansible_os_family' лучше использовать с' 'when' так ansible_os_family ==«Debian'' охватывает как Ubuntu и Linux Mint, например. – darkwing

0

Если вам нужно только знать, если вы имеете дело с Linux или Mac, вы можете использовать вывод uname. В сборник пьес это может выглядеть следующим образом:

- name: check operating system 
    shell: uname 
    ignore_errors: yes 
    register: uname_result 
    - name: install tensorflow 
    sudo: yes 
    shell: pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp34-cp34m-linux_x86_64.whl 
    when: uname_result.stdout == 'Linux' 
    - name: install tensorflow 
    sudo: yes 
    shell: pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.11.0rc0-py3-none-any.whl 
    when: uname_result.stdout == 'Darwin'