1. 程式人生 > >Ansible學習01-常用模塊

Ansible學習01-常用模塊

ksum load 計劃任務 修改 遠程服務器 你在 直接 eating 壓縮

1.command命令模塊
默認模塊
    root@centos-mysql01:/data/sh# ansible docker -a "hostname"
         192.168.1.124 | success | rc=0 >>
           centos-mysql01
          172.17.0.2 | success | rc=0 >>
            17466f2471ee

script模塊

yum安裝軟件模塊

root@centos-mysql01:/data/sh#ansible docker -m yum -a "name=httpd state=installed"
    name        #指定要安裝的軟件包名稱
    state       #指定使用yum的方法
       installed,present   #安裝軟件包
       removed,absent      #移除軟件包
       latest              #安裝最新軟件包 

copy文件拷貝模塊

推送文件模塊
 root@centos-mysql01:~#  ansible docker -m copy -a "src=/etc/passwd dest=/tmp/test.txt"
在推送覆蓋遠程端文件前,對被控制端已有文件進行備份,按照時間信息備份
root@centos-mysql01:~# ansible dcoker -m copy -a "src=/etc/passwd dest=/tmp/test.txt backup=yes"
直接向被控制端文件內寫入數據信息,並且會覆蓋被控制端文件內原有數據信息
root@centos-mysql01:~#  ansible docker -m copy -a "content=‘hz7726‘ dest=/tmp/hanye"
模塊內嵌命令
 src             #推送數據的源文件信息
 dest            #推送數據的目標路徑
 backup          #對推送傳輸過去的文件,進行備份
 content         #直接批量在被管理端文件中添加內容
 group           #將本地文件推送到被控制端,指定文件屬組信息
 owner           #將本地文件推送到被控制端,指定文件屬主信息
 mode            #將本地文件推送到被控制端,指定文件權限信息

file文件配置模塊

root@centos-mysql01:~# ansible docker -m file -a "path=/data/sh state=directory"
root@centos-mysql01:~# ansible docker -m file -a "path=/data/sh state=touch mode=0644 owner=root group=root"
root@centos-mysql01:~# ansible docker -m file -a "src=/data/sh path=/data/hanye state=link"
模塊內嵌命令
path            #指定遠程主機目錄或文件信息
recurse         #遞歸授權
state 
directory   #在創建目錄
touch       #在被控制端創建文件
link        #link或hard表示創建鏈接文件
absent      #表示刪除文件或目錄
mode        #設置文件或目錄權限
owner       #設置文件或目錄屬主信息
group       #設置文件或目錄屬組信息

service服務模塊

root@centos-mysql01:~# ansible docker -m service -a "name=httpd state=started enabled=yes"

name        # 定義要啟動服務的名稱
state       # 指定服務狀態
     started     #啟動服務
     stopped     #停止服務
     restarted   #重啟服務
     reloaded    #重載服務
 enabled         #開機自啟

group組模塊

root@centos-mysql01:~# ansible docker -m group -a "name=erp  gid=1008"

 name            #指定創建的組名
 gid             #指定組的gid
 state   #用戶組狀態
     absent      #移除被控制端主機的組
     present     #創建被控制端主機的組

user模塊

#創建用戶指定uid和gid,不創建家目錄也不允許登陸
   root@centos-mysql01:~# ansible docker -m user -a "name=hanye  uid=1008 group=1008 shell=/sbin/nologin create_home=no"
#創建用戶指定uid和gid,指定家目錄和密碼
    root@centos-mysql01:~# ansible docker -m user -a   "name=erp  group=erp uid=1008 password="$6$O9KDopiuPgvkrb4z$ee7/lfljSe79zQLIvDROsFM23hAJRRvVc.JoBWPGW3WbeHBQVG.IFcg1r8RppAIZ8naxckFGvOX2CIiwY6hEw0" home=/home/erp shell=/bin/bash"
        #password: 明文密碼為:666666

uid             #指定用戶的uid
group           #指定用戶組名稱
groups          #指定附加組名稱
password        #給用戶添加密碼 #此處的密碼是經過md5加密的密文
shell           #指定用戶登錄shell
create_home     #是否創建家目錄
home       #指定家目錄

cron模塊

 root@centos-mysql01:~# ansible docker  -m cron -a " name=‘crontab test‘ minute=5 hour=1 job=‘sh /data/sh/init_os.sh‘ "
     等同於:#crontab test
                    5 1 * * *  sh /data/sh/init_os.sh

    minute參數:此參數用於設置計劃任務中分鐘設定位的值
    hour參數:此參數用於設置計劃任務中小時設定位的值
    day參數:此參數用於設置計劃任務中日設定位的值
    month參數:此參數用於設置計劃任務中月設定位的值
    weekday參數:此參數用於設置計劃任務中周幾設定位的值
    user參數:此參數用於設置當前計劃任務屬於哪個用戶
    job參數:此參數用於指定計劃的任務中需要實際執行的命令或者腳本
    name參數:此參數用於設置計劃任務的名稱
    state參數:當計劃任務有名稱時,我們可以根據名稱修改或刪除對應的任務,當刪除計劃任務時,需要將 state 的值設置為 absent。

mount模塊

root@centos-mysql01:~#  ansible docker -m mount -a "src=192.168.1.124:/data path=/data  fstype=nfs opts=defaults state=present"
     src: 源地址目錄
     path: 掛在地址
     opts:默認屬性
     state
    present     # 開機掛載,僅將掛載配置寫入/etc/fstab
    mounted     # 掛載設備,並將配置寫入/etc/fstab
    unmounted   # 卸載設備,不會清除/etc/fstab寫入的配置
    absent      # 卸載設備,會清理/etc/fstab寫入的配置

synchronize模塊

 #復制目錄
 [root@master ~]# ansible dcoker  -m synchronize -a ‘src=/tmp/hanye  dest=/data/soft/ compress=yes‘
     #遠端拉去
     [root@master tmp]# ansible docker -m synchronize -a ‘mode=pull  src=/root/hanye dest=/data/soft/ compress=yes‘
         archive # 是否采用歸檔模式同步,即以源文件相同屬性同步到目標地址
checksum # 是否效驗
compress # 開啟壓縮,默認為開啟
copy_links # 同步的時候是否復制連接
delete # 刪除源中沒有而目標存在的文件(即以推送方為主)
dest= # 目標地址
dest_port # 目標接受的端口,ansible配置文件中的 ansible_ssh_port 變量優先級高於該 dest_port 變量
dirs # 以非遞歸的方式傳輸目錄
existing_only # Skip creating new files on receiver.
group # Preserve group
links # Copy symlinks as symlinks.
mode # 模式,rsync 同步的方式 PUSH\PULL,默認都是推送push。如果你在使用拉取pull功能的時候,可以參考如下來實現mode=pull 更改推送模式為拉取模式
recursive # 是否遞歸 yes/no
rsync_opts # 使用rsync 的參數
rsync_path # 服務的路徑,指定 rsync 命令來在遠程服務器上運行。這個參考rsync命令的--rsync-path參數,--rsync-path=PATH # 指定遠程服務器上的rsync命令所在路徑信息
rsync_timeout # 指定 rsync 操作的 IP 超時時間,和rsync命令的 --timeout 參數效果一樣.
set_remote_user # put user@ for the remote paths. If you have a custom ssh config to define the remote user for
src= # 源,同步的數據源
times # 
--exclude=.Git 忽略同步.git結尾的文件

Ansible學習01-常用模塊