ansible經常使用模塊簡介

rpm和yum的區別node

yum 自動解決包的依賴關係

查看軟件包是否安裝python

rpm -qa | grep python2-pip 
rpm -q nginx

yumnginx

[epel] # 組名
name=Extra Packages for Enterprise Linux 7 - $basearch # 名字
baseurl=http://mirrors.aliyun.com/epel/7/$basearch  # url
failovermethod=priority 
enabled=1  # 是否啓動
gpgcheck=0  # 是否校驗gpgkey,0表示不校驗,1表示校驗
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

# 查詢包組
yum grouplist

# 安裝包組
yum groupinstall -y '包組名'

ansible

查看ansible生成的文件

# rpm -ql ansible | more
/etc/ansible
/etc/ansible/ansible.cfg  # ansible配置文件
/etc/ansible/hosts
/etc/ansible/roles

host-pattern

Usage: ansible <host-pattern> [options]

查看主機聯通性

ansible 主機ip -m ping
ansible 主機1 ip, 主機2 ip -m ping
ansible 分組名 -m ping
ansible 分組一,分組二 -m ping 
ansible "分組一:分組二" -m ping   # 並集
ansible "分組一:&分組二" -m ping  # 交集
ansible "分組一:!分組二" -m ping  # 差集

顯示可用模塊

ansible-doc -l

Usage: ansible-doc [-l|-s] [options] [-t <plugin type] [plugin]

plugin documentation tool

Options:
  -a, --all             **For internal testing only** Show documentation for all plugins.
  -h, --help            show this help message and exit
  -l, --list            List available plugins
  -M MODULE_PATH, --module-path=MODULE_PATH
                        prepend colon-separated path(s) to module library
                        (default=[u'/root/.ansible/plugins/modules',
                        u'/usr/share/ansible/plugins/modules'])
  -s, --snippet         Show playbook snippet for specified plugin(s)
  -t TYPE, --type=TYPE  Choose which plugin type (defaults to "module")
  -v, --verbose         verbose mode (-vvv for more, -vvvv to enable connection debugging)
  --version             show program's version number and exit


# 統計總個的模塊個數
ansible-doc params | wc -l

# 查看某個模塊參數的用法(如:查看command模塊中的-s參數)
ansible-doc -s command

command模塊

ansible-doc -s command

- name: Executes a command on a remote node
  command:
      chdir:                 # Change into this directory before running the command.
      creates:               # A filename or (since 2.0) glob pattern, when it already exists, this step
                               will *not* be run.
      free_form:             # (required) The command module takes a free form command to run.  There is
                               no parameter actually named 'free form'.
                               See the examples!
      removes:               # A filename or (since 2.0) glob pattern, when it does not exist, this step
                               will *not* be run.
      stdin:                 # Set the stdin of the command directly to the specified value.
      warn:                  # If command_warnings are on in ansible.cfg, do not warn about this
                               particular line if set to `no'.

# 注意:
variables like `$HOME' and operations like `"<"', `">"', `"|"', `";"' and `"&"' will not work.

shell模塊

# 修改用戶密碼
ansible 主機id/分組 -m shell -a "echo 'passwd' | passwd --stdin 用戶名"

# 遠程執行腳本
ansible 主機id/分組 -m shell -a "./1.py"

script模塊

# 在其餘機器上執行管控機上的文件
ansible 主機id/分組 -m script -a "./2.py"

copy模塊

# 複製文件到遠程主機
ansible 主機id/分組 -m copy -a "src=源文件路徑 dest=目標文件路徑"

# 複製文件到遠程主機,並對遠程主機上的原文件進行備份
ansible 主機id/分組 -m copy -a "src=源文件路徑 dest=目標文件路徑 backup=yes"

# 複製文件到遠程主機,並修改屬主和權限
ansible 主機id/分組 -m copy -a "src=源文件路徑 dest=目標文件路徑 owner=用戶名 mode=700"

# 將content中的內容覆蓋寫入到指定文件中
ansible 主機id/分組 -m copy -a "dest=目標文件路徑 owner=用戶名 mode=700 content=nihao"

file模塊

# 在遠程主機上建立一個文件
ansible 主機id/分組 -m file -a "path=路徑 state=touch"

# 在遠程主機上建立一個文件夾
ansible 主機id/分組 -m file -a "path=路徑 state=directory"

# 在遠程主機上建立軟鏈接
ansible 主機id/分組 -m file -a 'path=目標 state=link src=源文件'

# 在遠程主機上建立硬鏈接
ansible 主機id/分組 -m file -a 'path=目標 state=hard src=源文件'

# 在遠程主機上刪除文件
ansible 主機id/分組 -m file -a 'path=文件路徑 state=absent'

fetch模塊

# 拉取被管控機的文件或目錄到本地,以被管控機的ip做爲目錄名,並保留原有的目錄結構
ansible 主機id/分組 -m fetch -a "src=/var/log/cron dest=/root"

yum模塊

# 在被控機上安裝軟件包
ansible 主機id/分組 -m yum -a "name=軟件名"

# 在被控機上安裝軟件包組
ansible 主機id/分組 -m yum -a "name=@包組名"

# 在被控機上卸載軟件包
ansible 主機id/分組 -m yum -a "name=軟件名 state=absent"

pip模塊

# 安裝指定模塊
ansible 主機ip/分組 -m pip -a "name=模塊名"

service模塊

# 開啓nginx
ansible 主機ip/分組 -m service -a "name=nginx state=started"

# 關閉nginx
ansible 主機ip/分組 -m service -a "name=nginx state=stoped"

cron模塊

分 時 日 月 周 job
1  0  *  *  *
*  *  *  *  * 

# 建立定時任務
ansible 主機ip/分組 -m cron -a "minute=58 job='touch 1.txt' name=nihao"

# 刪除定時任務
ansible 主機ip/分組 -m cron -a "minute=58 job='touch 1.txt' name=nihao disable=yes"

user模塊

# 用戶
- 超級用戶 root 0
- 系統用戶 不能登陸 201-999 centos7 1-499 centos6
- 普通用戶 能夠登陸 1000-60000 centos7 500-65535 centos6

# 組
- 超級組 root 0
- 系統組 201-999 centos7 1-499 centos6
- 普通組 1000-60000 centos7 500-65535 centos6



# 新建用戶並指定組
ansible db -m user -a "name=test groups=root"

# 刪除用戶可是不刪除家目錄
ansible db -m user -a "name=test state=absent"

# 刪除用戶同時刪除家目錄
ansible db -m user -a "name=test state=absent remove=yes"

group模塊

# 建立普通組
ansible 主機ip/分組 -m user -a "name=組名"

# 刪除普通組
ansible 主機ip/分組 -m user -a "name=組名 state=absent"

setup模塊

# 查看ansible收集的信息
ansible 主機ip/分組 -m setup
相關文章
相關標籤/搜索