Linux-ansible

目的

ansible官方文檔python

項目:代碼發佈系統nginx

實現功能: 發佈代碼web

前戲

  • ansible
  • openpyxl
  • 項目的開發

ansible

python開發的一款開源工具shell

批量到執行遠程主機命令django

安裝

yum install ansible -ycentos

查看ansible生成的文件

rpm -ql ansible

查看ansible生成的命令

ansible  # 用來執行ansible的一些命令
ansible-doc #用來查看ansible的模塊的幫助信息
ansible-playbook #用來執行playbook
ansible-galaxy #用來下載第三方的playbook

操做都是冪等的

ansible 命令格式

ansible <host-pattern> [options]
-a MODULE_ARGS #模塊的參數
-C, --check #測試,幹跑
-f FORKS #指定併發數
--list-hosts #列出host-pattern主機
--syntax-check  #語法檢查
-m MODULE_NAME, #指定模塊

生成公鑰私鑰

ssh-keygen

複製公鑰到遠程主機

ssh-copy-id 192.168.19.9

ping 命令走icmp協議

ansible 第一個命令

ansible all -m ping #跟系統自帶的ping不同

host-pattern 格式

  • [web]
    192.168.19.9
    192.168.19.26
    [db]
    192.168.19.26
    192.168.19.37
    [cache]
    192.168.19.37
  • www[001:006].example.com
  • 指定全部 all
  • 指定單臺機器(指定多個機器)
  • 指定分組(多個分組)
  • 指定分組並集 # ansible 'web:db' -m ping
  • 指定分組的交集 # ansible 'web:&db' -m ping
  • 指定分組的差集 #ansible 'web:!db' -m ping

命令相關

command

ansible web -m command -a 'pwd'
ansible web -a 'chdir=/tmp pwd' #切換到/tmp並執行pwd
ansible web -a 'creates=/etc/  mkdir /data2' #判斷creates是否存在,真就忽略後面的操做
ansible web -a 'removes=/tmp/data  mkdir /tmp/data2' #判斷removes是否存在,假就忽略後面的操做

補充

tail -1 /etc/shadow 查看最後一個用戶
echo 'test1'|passwd --stdin test1 設置用戶密碼,不須要二次確認

ansible-doc

Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-a #列出全部的模塊
-l #列出ansible的模塊
-s #片斷式顯示模塊的信息
# 列出模塊的詳細信息

shell

ansible web -m shell -a 'echo "test1"|passwd --stdin test1' #修改密碼
ansible 192.168.19.9 -m shell -a '/root/a.sh' #指定遠程主機上的shell腳本
ansible 192.168.19.9 -m shell -a '/root/a.py' #指定遠程主機上的python文件

sctipt

ansible all -m script -a '/root/a.sh'  #執行管控機上的shell腳本

文件相關的 命令

copy 複製管控機文件到被管控機

ansible web -m copy -a 'src=/etc/fstab dest=/data/fst' #src指定源文件 dest指定目標文件
 ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes' #backup備份
 ansible web -m copy -a 'src=/etc/init.d dest=/data/' #複製目錄和目錄下的文件到遠程主機,遠程主機也是一個文件夾
 ansible web -m copy -a 'src=/etc/init.d/ dest=/data/' #複製目錄下的文件
 ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes  mode=600' #mode 指定權限,owner指定文件的屬主,group用來指定屬組

file

ansible db -m  file -a 'path=/data10 state=directory' #path指定地址,state=directory表示建立文件夾
ansible db -m  file -a 'path=/data10/test1 state=touch' #state=touch 表示建立新文件
ansible db -m  file -a 'path=/data10/test10 src=/data10/test1 state=link' #src表示源文件,path是否是目標,state=link是否是建立一個軟鏈接
ansible db -m  file -a 'path=/data10/test1 state=absent' #state=absent 表明刪除

補充

ln 建立硬連接 連接文件變動,源文件不變
ln -s 建立軟鏈接 連接文件變動,源文件變

fetch

ansible db -m fetch -a 'src=/etc/fstab dest=/tmp' #src源地址(在被控機器上),dest目標地址(管控機上的地址)每一個管控機的文件都生成了一個目錄,會保持文件的原來目錄結構

軟件相關

補充

[name]   #分組
name=CentOS-$releasever - Base - mirrors.aliyun.com  #這個分組的名字
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ #分組的url,叫baseurl
        http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=0 # gpgcheck=1須要驗證key文件,gpgcheck=0不驗證key
enabled=1 #enabled=1 表示分組可用,enabled=0表示分組是不可用的
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #key文件

yum

ansible web -m yum -a 'name=nginx state=installed' # 安裝nginx
ansible web -m shell -a 'rpm -qa|grep nginx' #查看nginx是否是安裝成功
ansible web -m yum -a 'name=nginx state=absent'  #卸載nginx

pip

ansible web -m pip -a 'name=Django==1.11.15' # 安裝django

補充

pip freeze  > file #給當前的python模塊作快照
pip install [options] -r <requirements file>  安裝
pip list #查看當前python安裝的全部模塊
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息