代碼發佈系統python
代碼發佈:把本地的代碼經過某些方式弄到線上,能夠供別人訪問git
部署web
ansible 批量在遠程主機上執行命令shell
puppet rubyjson
ansiblewindows
saltstack跨域
python開發ruby
openpyxl 操做excel表格 讀寫bash
git 版本控制併發
celery 異步,延時任務,定時任務的一個芹菜
一、安裝epel源
yum install -y wget # 安裝wget
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下載epel源文件
二、安裝ansible
yum install ansible -y
Usage: ansible <host-pattern> [options]
-a MODULE_ARGS, --args=MODULE_ARGS # 模塊的參數
-C, --check # 會去執行,可是不作任何的改變,幹跑,白跑
-f FORKS, --forks=FORKS # 指定進程數,作併發
--list-hosts #列出主機
-m MODULE_NAME # 模塊名稱
--syntax-check #檢查語法
-k, --ask-pass ask for connection password #指定密碼
rpm -ql ansible
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
10.0.0.132
10.0.0.133
10.0.0.134
密碼
祕鑰
ssh-keygen # 生成祕鑰
ssh-copy-id root@10.0.0.132 # 將祕鑰文件複製到遠程主機
ansible 10.0.0.132 -m ping
ansible 10.0.0.133 -m ping
ansible 10.0.0.134 -m ping
ansible all -m ping # 全部機器,hosts文件裏面
ansible 10.0.0.133,10.0.0.132 -m ping # 部分機器
## 分組信息
[web]
10.0.0.132
10.0.0.133
[db]
10.0.0.133
10.0.0.134
[cache]
10.0.0.134
## www[001:006].example.com 從www001到www006
ansible web --list-hosts # 用來獲取符合條件的主機
ansible web -m ping # 探測組內的機器
ansible web,db -m ping # 獲取db和web的並集
ansible 'web:&db' -m ping # 獲取db和web的交集
ansible 'web:!db' -m ping # 獲取db和web的差集,在web中可是不在db中的
ansible 'web:db' -m ping # 獲取db和web的並集
弱口令校驗
密碼要符合的規則
必須有大寫字母,小寫字母,數字,特殊字符
密碼必須12位以上
密碼須要三個一換
單個的主機
單個組
多個組
交集
‘web:&db’
並集
‘web:db’
web,db
差集
‘web:!db’
全部的機器 all
多個主機
Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-j, --json #以json的方式返回全部模塊的信息
-l # 列出全部的模塊
-s, --snippet # 以片斷式顯示模塊的幫助信息
# 顯示所有信息
ansible-doc -l |wc -l #統計ansible的模塊
chdir #切換目錄
creates # 若是存在,就不執行,若是不存在,就執行
removes # 若是不存在,就不執行,若是存在,就執行
ansible web -m command -a "pwd"
ansible web -m command -a "ls /tmp"
ansible web -m command -a "chdir=/tmp pwd" # 切換目錄,通常作編譯安裝
ansible web -m command -a "creates=/tmp pwd" # 不被執行,由於/tmp已經存在,
ansible web -m command -a "creates=/tmp2 pwd" # 被執行,由於/tmp2目錄不存在
ansible web -m command -a "creates=/tmp2 mkdir /data" # 會被執行,由於/tmp2目錄不存在
ansible web -m command -a "removes=/tmp2 pwd" # 不被執行,由於/tmp2目錄不存在
ansible web -m command -a "removes=/tmp pwd" # 會被執行,由於/tmp已經存在,
補充
#查看用戶建立成功與否
1.ll /home
2.tail -1 /etc/passwd
3.tail /etc/shadow
4.id alex
echo "alex3714" |passwd --stdin alex # 給用戶設置密碼,不須要二次確認
[root@localhost ~]# name=alex
[root@localhost ~]# echo "$name"
alex
[root@localhost ~]# echo '$name'
$name
shabang
ansible web -m shell -a "echo 'alex'|passwd --stdin alex" # 給用戶設置密碼
ansible 10.0.0.132 -m shell -a "bash a.sh" # 執行shell腳本
ansible 10.0.0.132 -m shell -a "./a.sh"
ansible 10.0.0.132 -m shell -a "/root/a.sh"
ansible 10.0.0.132 -m shell -a "/root/a.py" # 執行python腳本
ansible 10.0.0.132 -m shell -a "python a.py"
# shell 腳本
ansible db -m script -a "/root/a.sh" # 執行的是本地的腳本,管控機上的腳本
ansible db -m script -a "creates=/root/a.sh /root/a.sh" # 判斷是遠程主機是否存在,若是存在,就不執行,若是不存在,就執行
ansible db -m script -a "removes=/root/a.sh /root/a.sh" # 判斷的主機是否存在,若是存在,就執行,若是不存在,就不執行
backup # 建立備份文件,以時間戳結尾
content # 直接寫內容
dest # 目標地址
group #文件的屬組
mode # 文件的權限W 2 R 4 X 1
owner #文件的屬主
src # 原文件
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh" # 複製文件
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755" # 複製文件,並修改文件的權限
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755 owner=alex" #複製文件,修改文件的權限,屬主,根據md5值來判斷
ansible db -m copy -a "src=/etc/init.d dest=/tmp/" # 複製文件夾
ansible db -m copy -a "src=/etc/init.d/ dest=/tmp/" # 複製文件夾下面的全部文件
ansible db -m copy -a "src=/etc/init.d dest=/tmp/ owner=alex " # 複製文件夾,並改變文件夾的屬性,文件夾的文件的屬性也會跟着改變
ansible db -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私語' dest=/tmp/a.sh" # 直接寫文字,覆蓋寫入,要慎用
ansible db -m copy -a "src=/root/a.sh dest=/root/a.sh mode=755 owner=alex backup=yes" #備份文件,若是遠程機器上沒有要備份的文件,即便指定了backup=yes 也不會去備份文件
access_time # 訪問事件
group # 屬組
mode #權限
owner #屬主
path #路徑
src # 原文件,link和hard的時候使用
state:
directory 文件夾
file
touch 空文件
link 軟鏈接
hard 硬連接
absent 刪除
ansible db -m file -a "path=/tmp/baoyuan state=directory" # 建立一個目錄
ansible db -m file -a "path=/tmp/baoyuan state=directory owner=alex mode=644" # 建立一個目錄,並制定屬主,權限
ansible db -m file -a "path=/tmp/baoyuan.txt state=touch owner=alex mode=644" # 建立一個文件,並制定屬主,權限
ansible db -m file -a "path=/tmp/f src=/etc/fstab state=link" # 建立一個軟鏈接
ansible db -m file -a "path=/tmp/f state=absent" # 刪除
補充
軟鏈接 windows的快捷方式 ln —s 原文件 目標文件 源文件改變,目標文件也改變 能夠跨越分區 原文件刪除,連接失效
硬連接 指向同一個硬盤的地址 ln 原文件 目標文件 原文件改變,目標文件也改變 不能夠跨域分區 原文件刪除,不會受影響
複製
ansible 安裝,epel源
ansible 裏面ping 走的是ssh
host-pattern的格式
單個的ip
多個的ip
單個組
多個組
交集
‘web:&db’
並集
‘web:db’
‘web,db’
差集
‘web:!db’
command 執行命令 不支持特殊字符 $ < > | ; &
chdir 切換目錄,通常是編譯安裝
creates 判斷是否存在,若是存在,就不執行,若是不存在,就執行
removes 判斷是否存在,若是存在,就執行,若是不存在,就不執行
shell 執行遠程機器上的shell腳本或者python腳本
chdir 切換目錄,通常是編譯安裝
creates 判斷是否存在,若是存在,就不執行,若是不存在,就執行
removes 判斷是否存在,若是存在,就執行,若是不存在,就不執行
script 執行本地腳本,執行管控機上的腳本
chdir 切換目錄,通常是編譯安裝
creates 判斷遠程主機是否存在,若是存在,就不執行,若是不存在,就執行
removes 判斷遠程主機是否存在,若是存在,就執行,若是不存在,就不執行
copy 將本地的文件複製到遠程主機上
src 原文件
dest 目標文件
owner 屬主
group 屬組
mode 權限
backup 備份
content 直接寫內容,覆蓋寫
file 在遠程主機上建立文件,文件夾,軟鏈接,硬連接
path 目錄
src
link
hard
owner
group
mode
state
directory 文件夾
touch 文件
link 軟鏈接
hard 硬連接
absent 刪除
file