[英]How do you provide domain credentials to ansible's mount module?
我已經想出如何使用shell模塊使用以下命令在網絡上創建一個mount:
- 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的mount模塊來做同樣的事情。
具體來說,我很擔心提供domain=MY_DOMAIN,username=USER,password=PASSWORD
。 我看到opts有一個標志,但我不太確定它會是什么樣子。
我沒有親自使用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輸出。 如果它不起作用,那么調試輸出應該給你一個相當不錯的想法如何繼續。
這是我最終得到的命令:
- 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
關於它的幾點說明:
我不認為file_mode=0777,dir_mode=0777
應該是必需的,但在我的情況下需要我才能擁有該文件夾的寫入權限。 我可以在不指定權限的情況下讀取文件夾,但我無法寫入。
這段代碼是正確的,不是因為我在1.9.0和1.9.1上測試了這個ansible bug ,而且這兩個版本都是一個問題。
sudo_user: root sudo: yes
擴展@ adam-kalnas答案:
創建fstab條目然后調用mount將允許您以更合適的權限級別掛載文件系統(即不是0777)。 通過執行state: present
ansible將僅在/ etc / fstab中創建條目,然后可以由用戶安裝。 從ansible 安裝模塊文檔 :
absent
和present
只處理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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.