ansible(二)

一.軟件相關模塊

1.yum(下載包)

正常操做
yum 與rpm的區別
yum能夠解決依賴關係
rpm 全稱readhat package manager(紅帽包管理工具),須要本身解決依賴
yum源配置

查看yum源配置python

cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch  #名字
baseurl=http://mirrors.aliyun.com/epel/7/$basearch  #rpm源的地址,後面能夠寫http,https,ftp,Samba,file:
failovermethod=priority
enabled=1 # 是否開啓,1表明開啓,0表示關閉
gpgcheck=0  #是否校驗簽名,1表明校驗,0表示校驗(校驗安全性)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum安裝一個包
yum install -y nginx
yum安裝一個包組

注:一個包組中有一類功能對於各個軟件的處理linux

yum grouplist #查看包組信息
yum groupinstall 包組名 #安裝包組
ansible提供的yum模塊
(1)yum模塊的參數

disablerepo #禁用源
enablerepo #啓用源
name #包名
static #狀態,包括安裝和卸載
(2)遠程在web組的被管控機上下載wget包
ansible web -m yum -a 'name=wget'
(3)將yum源發送到管控機(使用鏡像源下載更快,有的包在yum源中),下載安裝pip包
ansible web -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'
ansible web -m yum -a 'name=python2-pip' #下載安裝pip包
(4)遠程卸載wget包
ansible web -m yum -a 'name=wget state=absent'
(5)遠程安裝包組,@表明包組
ansible web -m yum -a 'name="@Development Tools"'

 

2.pip(下載yum中沒有的包)

正常操做
將代碼的環境依賴打包到文件中
pip freeze > a.txt
安裝依賴
pip install -r a.txt
安裝單個包
pip install 包名
查看安裝了哪些包
pip list
ansible提供的pip模塊
(1)pip模塊的參數

(2)安裝flask
ansible web -m pip -a 'name=flask'
requirements #安裝電腦上的全部

 

3.service(啓動)

正常操做
安裝nginx
ansible web -m yum -a 'name=nginx'
nginx的啓動
systemctl start nginx #centos7
service nginx start #centos6
查看nginx進程是否啓動
ps -ef|grep nginx
ss -tnlp
設置nginx開機自啓動
systemctl enabled nginx #centos7開機自啓動
chkconfig nginx on #centos6開機自啓動
ansible提供的service模塊
(1)啓動nginx
ansible web -m service -a 'name=nginx,static=started'
(2)查看是否啓動
ss -tnlp
(3)關閉nginx
ansible web -m service -a 'name=nginx,ststic=stoped'

 

4.cron計劃任務,當時任務,週期任務

正常操做
每兩個小時執行一次命令
分時日月周 任務
crontab 0 */2 * * * pwd # 每兩個小時執行一次命令
編輯計劃任務
crontab -e
查看計劃任務
crontab -l
ansible提供的cron模塊
(1)cron模塊的參數
day 天
disabled 禁用
hour 小時
job 任務
minute 分鐘
month 月
name 任務名字
weekday 周
(2)新建一個計劃任務
ansible web -m cron -a 'minute=27 job="touch /tmp/aaaaaaa.txt" name=touchfile'
(3)刪除計劃任務
ansible web -m cron -a 'name=touchfile state=absent'
(4)禁用計劃任務(會加進去,以井號表示禁用)
ansible web -m cron -a 'minute=30 job="touch /tmp/bbbb.txt" name=touchfile2 disabled=yes'

 

二.用戶相關模塊

1.user

正常操做
linux中用戶的分類
管理員 root uid 0
普通用戶
	系統用戶 不能登陸系統 uid 1-999 centos7,uid 1-499 centos 6
	登陸用戶 能夠登陸 uid 1000-65535 centos7,uid 500-65535 centos6
linux中用戶組的分類
管理員組 root 0
系統用戶組 uid 1-999 centos7,uid 1-499 centos 6
登陸用戶組 uid 1000-65535 centos7,uid 500-65535 centos6
建立新用戶
useradd shy

useradd的參數nginx

-d 指定用戶的家目錄(默認在/home下)
-g 指定用戶的組
-G 指定用戶的附加組
-s 指定登錄後使用的shell
-r 建立一個系統組(系統用戶)
useradd -r shy 建立一個系統用戶,從999倒敘
useradd -s /sbin/nologin shy #建立普通用戶,從1000開始升序
useradd -d /opt/shy #建立用戶時,指定用戶的家目錄
useradd -u 3000 shy2 #指定uid建立用戶
刪除用戶
userdel alex #僅刪除用戶
userdel -r alex #刪除用戶和加目錄
ansible提供的user模塊
(1)user模塊的參數
group 組
groups 附加組
home 家目錄
name 用戶名
password 密碼
shell 用戶登陸後使用shell
system 建立系統用戶
uid 指定id建立用戶
state 狀態
remove 刪除用戶
(2)建立一個uid爲4000,不能用shell登陸的,指定用戶的家目錄,用戶的附加組
ansible web  -m user -a 'name=ccc uid=4000 home=/opt/ccc groups=root shell=/sbin/nologin'
(3)刪除用戶(家目錄不會刪除)
ansible web -m user -a 'name=shy static=absent'
(4)刪除用戶(家目錄也刪除)
ansible web -m user -a 'name=shy static=absent remove=yes'

 

2.group

正常操做
建立用戶組
groupadd shy
刪除用戶組
groupdel shy
查看用戶組信息
tail -l /etc/group
ansible提供的group模塊
(1)group模塊的參數

gid 組的id
name 組名
system 系統組
static 狀態
建立一個組名爲shy的系統組
ansible web -m group -a 'name=shy system=yes'
刪除組
ansible web -m group -a 'name=shy static=absent'
小練習

在web組中建立一個用戶組shy1web

ansible web -m group -a 'name=shy1'

在web組中建立一個用戶組shy2shell

ansible web -m group -a 'name=shy2'

把/etc/fstab文件複製到/tmp/f編程

ansible web -m copy -a 'src=/etc/fatab dest=/tmp/f'

安裝nginx,並設置開機自啓flask

ansible web -m service -a 'name=nginx enabled=yes'

 

三.ansible劇本

1.做用

當相同的任務屢次執行時,將任務內容編輯到腳本中,之後執行時,執行腳本便可,節省時間centos

2.yaml編程語言

(1)做用

經常使用來寫配置文件安全

(2)語法表示
字典的表示 key:value
列表的表示 -

注:後綴名.yaml或.yml併發

例:

name:shy
age:18
addr:heilongjiang
hobby:
- running
- skiing
- sleeping

注:yaml對語法要求十分嚴格(:後必定要有一個空格,=先後必定不能有空格)

(3)用yaml編寫配置文件
 - hosts: web
   tasks:
   - name: creategroup
     group: name=shy10
   - name: createuser
     user: name=user10

3.ansible-palybook模塊 (用於執行.yml文件)

(1)ansiblepalybook的參數

-C, --check   # 檢查,白跑,幹跑
-f FORKS, --forks=FORKS #用來作併發
--list-hosts # 列出主機列表
--syntax-check # 語法檢查 
(2)檢查文件的語法
ansible-playbook --syntax-check p1.yml
(3)跑一下配置文件試試(不產生結果)
ansible-playbook -C p1.yml 
(4)真正的執行配置文件
ansible-playbook  p1.yml 

注:執行順序,從上往下執行

(5)特性

冪等性:無論執行多少遍,結果都是同樣的

4.傳參

(1)語法
- hosts: web
  tasks:
  - name: create{{ user }}
    user: name={{ user}}
(2)傳參方式
方式一
ansible-playbook -e 'user=shy11' p2.yml
方式二

修改/etc/ansible/hosts文件

[db]
192.168.107.132 user=shy12
192.168.107.133 user=shy13
方式三

修改/etc/ansible/hosts文件

[db:vars] #表示組的參數
user=shy14
方式四
- hosts: db
  vars:
  - user: shy15
  tasks:
  - name: create{{ user }}
    user: name={{ user}}
方式五
- hosts: db
  tasks:
  - name: sum
    shell: echo 7+8|bc
    register: user
  - name: createuser
    user: name={{user.stdout}}
(3)bc模塊(用於計算)
echo 3+4|bc #計算3+4
(4)傳參優先級
-e > playbook > hosts
相關文章
相關標籤/搜索