目錄python
一、安裝epel源linux
yum install -y wget # 安裝wget wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo # 下載epel源文件
二、安裝ansibleweb
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
密碼redis
祕鑰shell
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的並集
密碼要符合的規則django
單個的主機json
ansible 127.0.0.1 -m .. 逗號分隔
單個組flask
ansible 組名 -m ...
差集windows
全部的機器 allcentos
多個主機
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 腳本 #!/bin/bash mkdir /alex2sb11 # python腳本 #!/bin/env python #coding:utf-8 print "停車坐愛楓林晚,霜葉紅於二月花"
執行本機的腳本
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" # 建立一個目錄 *-
88
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 原文件 目標文件 原文件改變,目標文件也改變 不能夠跨域分區 原文件刪除,不會受影響
將遠程機器上的文件拉取到本地, 以ip或者主機名生成目錄,並保結構留原來的目錄
dest #目標地址 src #源地址 ansible web -m fetch -a "dest=/tmp src=/var/log/cron"
1.yum 和rpm的區別
rpm redhat package manage yum會解決依賴關係
2.yum源的配置
[epel] # 名稱 name=Extra Packages for Enterprise Linux 7 - $basearch # 描述信息 baseurl=http://mirrors.aliyun.com/epel/7/$basearch # yum源的地址 failovermethod=priority enabled=1 # 指定yum源是否可用,1表明可用,0表明不可用 gpgcheck=0 # 是否檢查gpgkey文件,0表明不檢查,1表明的檢查 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
3.包組
linux lib windows dll 、 rpc 遠程過程調用 yum grouplist #查看包組 yum groupinstall # 安裝包組rpm
4.查看包安裝狀態
yum list|grep redis @表明安裝成功 rpm -q redis rpm -qa 查看全部的包 rpm -ql 查看包安裝生成的文件
.
disable_gpg_check # 是否要檢,查key disablerepo # 禁用repo enab name # 包名 state # 狀態 installed removed ansible web -m yum -a "name=python2-pip" # 安裝一個包 ansible web -m yum -a "name='@Development Tools'" # 安裝包組 ansible web -m yum -a "name=redis,python2-pip" # 同時安裝多個包 ansible web -m yum -a "name=redis state=absent" # 卸載
pip list #查看全部的python第三方包 pip freeze > a.txt # 導出pi pip install -r a.txt # 安裝
.
requirements #導出的文件 name # 包名 virtualenv # 虛擬環境 ansible web -m pip -a "name=django==1.11.18" # 安裝 ansible web -m pip -a "name=flask
ps -ef|grep redis # 查看進程 ss -tnlp #查看端口信息 # 啓動服務 systemctl start redis centos7 service redis start centos6 # 開機自啓動 systemctl enable redis centos7 chkconfig redis on centos6
.
enabled # 設置開機自啓動 name # 名稱" state startedansi stopped restarted reloaded ansible web -m service -a "name=redis state=started" # 啓動 ansible web -m service -a "name=redis state=stopped" # 關閉 ansible web -m service -a "name=redis state=started enabled=yes" # 啓動並設置開機自啓動
* * * * * job 分 時 日 月 周 任務 1 * * * * job # 表明每小時的第一個分鐘 2/* * * * * job # 每隔2分鐘執行job 1 10-19 * * * job # 表明10到19點的第一分鐘 0-59 0-23 1-31 1-12 0-7 job * * * * * tar -zcf /opt/etc.tar.gz /etc 分鐘不要用*,最好是指定時間 分鐘不要用*,最好是指定時間 分鐘不要用*,最好是指定時間 收集日誌 備份數據 同步時間 crontab -l # 查看計劃任務 crontab -r # 刪除全部的計劃任務 crontab -e # 編輯計劃任務
.
day # 天 hour # 小時 job #任務 minute #分鐘 month # 月 name #名字,描述信息,不能夠重複 state # 狀態 user # 執行計劃任務的用戶 weekday # 周 disabled # 禁止 ansible web -m cron -a "minute=21 job='touch /tmp/cron.txt' name=touchfile" # 設置計劃任務 ansible web -m cron -a "minute=23 job='touch /tmp/cron.txt' name=touchfile4 disabled=yes" # 禁用計劃任務,表現爲加註釋 ansible web -m cron -a "name=touchfile4 state=absent" # 刪除計劃任務
用戶的分類 超級管理員 root 0 其餘用戶 系統用戶 啓動服務來專門設置的用戶 1-999 centos7 1-499 centos6 登錄用戶 普通的登錄用戶 1000-65535centos7 500-65535 centos6 useradd -d # 指定家目錄 -g # 組id -G, --groups GROUPS # 附加組 -r, --system # 建立系統用戶 -s, --shell SHELL # 登錄shell -u, --uid UID #用戶id useradd -s /sbin/nologin -u 2000 -d /opt/wusir wusir #建立用戶,指定用戶的登錄shell,id,家目錄 useradd -s /sbin/nologin -G root,wusir -d /opt/wusir2 wusir2 #指定附加組,最大的後面+1 useradd -r baoyuan # 建立系統用戶,從999倒序 userdel wusir2 # 刪除用戶 userdel -r baoyuan4 # 刪除用戶並刪除用戶的家目錄
.
group # 組 groups #附加組 home #家目錄 name #用戶名 password #密碼 shell #登錄shell remove # 刪除用戶並刪除用戶的家目錄 state # 狀態 system #系統用戶 uid # 用戶id ansible db -m user -a "name=alex2 shell=/sbin/nologin home=/opt/alex2 uid=2000 group=root" # 建立用戶,並指定用戶的家目錄,登錄shell,uid,組 ansible db -m user -a "name=alex3 system=yes" #建立系統用戶 ansible db -m user -a "name=alex3 state=absent" # 刪除用戶 ansible db -m user -a "name=alex2 state=absent remove=yes" # 刪除用戶並刪除用戶的家目錄
用戶組的分類 超級組 root 0 其餘組 系統組 1-999 centos7 1-499 centos6 普通組 1000-65535centos7 500-65535 centos6 groupadd -g 指定組的id -r 指定系統組 groupdel
.
gid #組的id name # 組名 state #狀態 system #系統組 ansible db -m group -a "name=canglaoshi" #建立普通組 ansible db -m group -a "name=wutenglan system=yes" # 建立系統組 ansible db -m group -a "name=wutenglan state=absent" # 刪除組