name引數:這個是必須引數,指定要操作使用者的名稱
group引數:指定使用者所在的基本組
shell引數:指定使用者預設登陸shell
uid引數:指定使用者uid,一般不做設定
comment引數:用作使用者的註釋資訊,
password引數:用於設定使用者密碼 ,但是這個密碼不是明文的,而是加密後的
和/etc/shadow檔案中密碼欄位一樣
引數介紹就到這裡,下面將用例項講解各引數的用法
例1:建立名稱為test的使用者
[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=test"
可以從返回引數看出建立了使用者test,uid是1000,groupid也是1000,家目錄是/home/test 使用的shell 是/bin/bash
如果test使用者已經存在了,則不做任何操作,如下:
[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=test"
可以看到changed的值是false,說明沒有做任何改變。
[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=test state=absent remove=yes"
例3:安裝apache要建立apache使用者,但是這個使用者是不需要登陸的,我們要如何做呢?這裡就要指定登陸shell了,而指定的shell值是nologin。意思是不允許apache這個使用者登陸
[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=apache shell=nologin"
這樣就建立apache使用者了,而且無法用這個使用者登陸系統。因為無法登陸系統所以是沒有家目錄的。
如果指定apache使用者使用/bin/sh作為預設shell如下操作即可
[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=apache shell=/bin/sh"
例4:剛才建立了test使用者,我需要做個說明,這是一個測試使用者,如下操作:
[root@localhost ~]# ansible 192.168.146.129 -m user -a "user=test comment=Thistestuser"
然後我們檢視一下遠端機器上的/etc/passwd檔案
[root@localhost ~]# ansible 192.168.146.129 -m shell -a "grep test /etc/passwd"
可以看到"Thistestuser"欄位
使用者建立好了,是時候給使用者添加個密碼了。這裡用到了password引數,前面做引數說明的時候講到了,這個密碼不是明文的。是加密的,因此我們要把密碼的明文經過加密處理才能使用。
比如:我想給test使用者設定密碼為123456,應該怎麼做呢?下面跟我一步一步的操作即可。
首先進入到python命令列介面。用python的crypt模組對字串進行加密,最後返回的字串就是我們要用到的,注意字串是用單引號引起來的,我們只要單引號裡面的字串
具體操作步驟如下:
[root@localhost ~]# pythonPython 2.7.5 (default, Jun 17 2014, 18:11:42)[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import crypt>>> crypt.crypt('123456')'$6$xXHy1LuASc7e9tbO$38vx7.ZvpllcavRxvQ1z1GMBwGx5C3eTR2H8Xofbiq8/hwaj8cvWfM6D63agNMWeL6vu2kQ2lszum0JBQRejD/'
加密後的密碼已經生成了,我們直接拿來用就可以了。
例5:給test使用者設定密碼為123456
ansible 192.168.146.129 -m user -a 'user=test password="$6$xXHy1LuASc7e9tbO$38vx7.ZvpllcavRxvQ1z1GMBwGx5C3eTR2H8Xofbiq8/hwaj8cvWfM6D63agNMWeL6vu2kQ2lszum0JBQRejD/" '
這裡有個地方必須要注意的,執行的整條命令是單引號引起來的,密碼內容是雙引號引起來的。這樣做的原因是,加密後的密碼內容包含了一些特殊符號,必須要用雙引號引起來,避免產生歧義。
user模組常用的引數和引數值的使用已經講完了,接下來講解file模組