您如何为ansible的安装模块提供域凭据?

时间:2015-04-27 14:58:06

标签: ansible ansible-playbook

我已经弄清楚如何使用shell模块使用以下命令在网络上创建挂载:

- name: mount image folder share
  shell: "mount -t cifs -o domain=MY_DOMAIN,username=USER,password=PASSWORD  //network_path/folder /local_path/folder
  sudo_user: root
  args:
    executable: /bin/bash

但使用Ansible's mount module做同样的事情似乎是更好的做法。

具体来说,我对于为domain=MY_DOMAIN,username=USER,password=PASSWORD提供选项感到困惑。我看到有一个选择标志,但我不太确定这看起来如何。

3 个答案:

答案 0 :(得分:5)

我没有亲自使用过mount模块,但从文档中看起来你想做的事情如下:

- name: mount image folder share
  mount: fstype="cifs"
         opts="domain=MY_DOMAIN,username=USER,password=PASSWORD"
         src="//network_path/folder"
         name="/local_path/folder"

我试一试,然后使用-vvvv运行它来查看所有的ansible输出。如果它不起作用,那么调试输出应该给你一个相当不错的想法如何继续。

答案 1 :(得分:5)

这是我最终的命令:

- name: mount product image folder share
  mount: state="present" 
  fstype="cifs" 
  opts="domain= MY_DOMAIN,username=USER,password=PASSWORD,file_mode=0777,dir_mode=0777" src="//network_path/folder" name="/local_path/folder"
  sudo_user: root
  sudo: yes

关于它的几点说明:

  1. 我认为不应该要求file_mode=0777,dir_mode=0777,但在我的情况下需要我才能拥有该文件夹的写入权限。我可以在不指定权限的情况下读取文件夹,但我无法写入。

  2. 此片段是正确的,因为this ansible bug我在1.9.0和1.9.1上对此进行了测试,这在两个版本中都是一个问题。
    sudo_user: root sudo: yes

答案 2 :(得分:4)

扩展@ adam-kalnas回答:

创建fstab条目然后调用mount将允许您以更合适的权限级别(即不是0777)挂载文件系统。通过执行state: present ansible只会在/ etc / fstab中创建条目,然后可以由用户安装。来自ansible mount module documentation

  

absentpresent仅处理fstab,但不会影响当前   安装。

此外,您还希望避免在/ etc / fstab文件中保留凭据(因为所有人,人或服务都可以读取)。为避免这种情况,请创建一个适当安全的凭据文件。

所有人都看起来像这样:

- name: Create credential file (used for fstab entry)
  copy:
    content: |
      username=USER
      password=PASSWORD
    dest: /home/myusername/.credential
    mode: 0600
  become: true
  become_user: myusername

- name: Create fstab entry for product image folder share
  mount: 
    state: present 
    fstype: cifs 
    opts: "credentials=/home/myusername/.credential,file_mode=0755,dir_mode=0755,user" 
    src="//network_path/folder" 
    path="/local_path/folder"
  become: true

- name: Mount product image folder share
  shell: |
    mount "/local_path/folder"
  become: true
  become_user: myusername