ansible模塊之yum、pip、service、corn、user、group


ansible相關模塊

yum

  • rpm 和yum 的區別

    rpm:全稱redhat package manager (紅帽包管理器) 不能解決包之間的依賴關系

    yum:可以解決依賴關系

  • yum 源配置

  • [root@localhost ~]# 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 grouplist # 查看包組信息
    yum groupinstall 包組名 # 安裝包組
    
     #ansible-doc -s yum     查看yum模塊的參數信息
    
    disablerepo #禁用源
    enablerepo #啟用源
    name #包名
    state  install (`present' or `installed', `latest'), or remove (`absent' or `removed')
    
    ansible web -m yum -a 'name=wget' # 安裝wget
    rpm -q wget    #查詢已經安裝的軟件信息
    [root@localhost ~]# ansible web -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'
    #將管控機上的epel源復制到被管控機上
    ansible web -m yum -a 'name=python2-pip' # 安裝python2-pip
    ansible web -m yum -a 'name=wget state=absent' # 卸載軟件包
    ansible web -m yum -a 'name="@Development Tools"' # 安裝包組
    

pip

pip install 安裝包
pip freeze > a.txt 將python的環境打包到文件中
pip install -r a.txt 安裝文件中的包
pip list 查看所有的以安裝成功的包
ansible web -m pip -a 'name=flask' # 安裝flask模塊

service

ps -ef|grep nginx #查看進程
ss -tnlp # 查看端口信息
systemctl start nginx # centos7啟動nginx
service nginx start  # centos6啟動nginx
systemctl enable nginx # centos7 開機自啟動
chkconfig nginx on # centos6開機自啟動
ansible web -m service -a 'name=nginx state=started' # 啟動nginx
ansible web -m service -a 'name=nginx state=stopped' # 關閉nginx
ansible web -m service -a 'name=nginx state=started enabled=yes' # 設置開機自啟動

cron計划任務

* * * * * job 
分 時 日 月 周 任務
0 */2 *  * *  job  每隔兩個小時
0 12,13 * * * job 12點和13點
0 12-17 * * * job 12點到17點
0 12-17/2 * * 1,3,6,0 周1,周3,周6,周7 12點到17點每隔兩個小時 
[root@localhost ~]# cat /etc/crontab 
crontab -e # 編輯計划任務
crontab -l # 查看計划任務
crontab -r # 刪除計划任務
[root@localhost ~]# ansible-doc -s cron    #查看cron模塊的參數
day  #天
disabled #禁用
hour #小時
job #任務
minute #分鍾
month #月
name #任務名字
weekday #周
state   #present or absent
ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt" name=touchfile' # 新建一個計划任務,每小時的第26分鍾在被管控機組db的/tmp下創建xzmly.txt文件
ansible db -m cron -a 'name=touchfile state=absent' # 刪除一個計划任務
ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt" name=touchfile disabled=yes'  # 禁用計划任務,以#表示禁用

[root@localhost ~]# crontab -l
#Ansible: touchfile
#56 * * * * touch /tmp/fengchong.txt

用戶相關: user

用戶:
	管理員  root 0
	普通用戶
		系統用戶  不能登錄  1-999 centos7 1-499 centos6
		登錄用戶  可以登錄  1000-65535 centos7 500-65535 centos6
用戶組:
    管理員組 root 0
    系統用戶組 1-999 centos7 1-499 centos6
    登錄用戶組 1000-65535 centos7 500-65535 centos6
    
[root@localhost ~]# useradd -h     #查看useradd的參數
 -d  #指定用戶的家目錄
 -g  #指定用戶的組
 -G  #執行用戶的附加組
 -s  #指定登錄后使用的shell
 -r  #創建一個系統用戶
 useradd -r wusir  #創建系統用戶, 從999倒序
 useradd -s /sbin/nologin alexsb #創建的是普通用戶,從1000開始升序
 useradd -d /opt/alexsb2 alexsb2 #創建用戶時指定用戶的家目錄
 useradd -u 3000 alexsb6 # 創建用戶並指定用戶的uid
 userdel alex #刪除用戶
 userdel -r alexsb2 #刪除用戶並刪除用戶的家目錄
  
  groupadd yuchao #創建用戶組
  groupdel yuchao #刪除用戶組
#ansible中的user模塊參數
group #組
groups #附加組
home #家目錄
name #用戶名
password #密碼
remove #當remove=yes時,刪除用戶且刪除用戶的家目錄
shell #用戶登錄后使用的shell
system #創建一個系統用戶
uid #用來指定用戶的id
state #狀態
ansible db -m user -a 'name=wulaoshi uid=4000 home=/opt/wulaoshi groups=root shell=/sbin/nologin' #創建一個用戶,並指定用戶的id,用戶的家目錄,用戶的附加組,用戶的shell
ansible db -m user -a 'name=wulaoshi state=absent' #刪除用戶但是不刪除用戶的家目錄
ansible db -m user -a 'name=wulaoshi3 state=absent remove=yes' # 刪除用戶並刪除用戶的家目錄

用戶相關: group

[root@localhost ~]# ansible-doc -s group
#查看模塊group的參數信息
gid #組的id
name #組名
system #系統組
state
ansible db -m group -a 'name=wulaoshi system=yes' #創建系統組
ansible db -m group -a 'name=wulaoshi state=absent' # 刪除組

小練習:以下操作均在主機列表web上進行

1、創建一個用戶組alex10

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

2、創建一個用戶wusir10

ansible web -m user -a 'name=wusir10'

3、把/etc/fstab文件復制到遠程主機上/tmp/f

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

4、安裝nginx,並啟動,設置開機自啟動

ansible web -m yum -a 'name=nginx'

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

ansible 劇本

yaml介紹:

是一個編程語言
文件后綴名 yaml yml
數據對應格式:
	字典: key: value
	列表: [] -

ansible-playbook命令格式

執行順序: 從上往下

特性:冪等性 不管執行多少遍,結果都是一樣的

#命令格式:ansible-playbook [options] playbook.yml [playbook2 ...] 
#參數:
    -C, --check   # 檢查,白跑,干跑
    -f FORKS, --forks=FORKS #用來做並發
    --list-hosts # 列出主機列表
    --syntax-check # 語法檢查 
    -e         #指定參數



簡單用法

#vi p1.yml   寫入如下內容:

- hosts: web         #主機列表
  tasks:             #任務
  - name: creategroup     #任務名稱
    group: name=alex10    #模塊名:參數
  - name: cretaeuser      #任務名稱
    user: name=wusir10    #模塊名:參數
    
    
#檢查p1.yml語法的正確性
[root@localhost ~]# ansible-playbook --syntax-check p1.yml

playbook: p1.yml
#執行
[root@localhost ~]# ansible-playbook p1.yml


hosts: gb
tasks:
- name: 第san個姑娘
  dong: 第san個姑娘
  

傳參

- hosts: web
  tasks:
  - name: create{{ user }}
    user: name={{ user}}

第一種方式

ansible-playbook -e 'user=alexsb10' p2.yml

第二種方式

[db]
192.168.107.132 user=alexsb11
192.168.107.133 user=alexsb12

第三種方式

[db:vars] #表示組的參數
user=alexsb13

第四種方式

- hosts: db
  vars:
  - user: alexsb14
  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}}

傳參方式的優先級

-e > playbook vars > hosts文件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM