回顧
redirect 臨時重定向
ad-hoc:臨時執行
playbook:使用yml語法記錄了多條ad-hoc
roles:解耦
site里面寫了,依賴也寫了,不會執行兩遍
client 客戶端
server 服務端
yum:
1.路徑(本地)
2.包名(鏡像倉庫)
3.url(網站中的)
cat /var/lib/nfs/etab 可以查看nfs配置文件是否生效(該結果只與配置文件是否生效有關)
防火牆如果是開着的話,那么在web上是不能看掛載點的(不能showmount -e),無論是否可以掛載
zabbix:
https://www.zabbix.com/documentation/4.0/manual/installation/install_from_packages/rhel_centos
jumpserver官網
https://docs.jumpserver.org/
Ansible Roles基本概述
- 角色(roles)是ansible自1.2版本開始引入的新特性,用於層次性,結構化地組織playbook。
roles
:不管是Ansible還是saltstack,都可以使用roles
roles目錄結構使用ansible-galaxy創建
[root@m01 ~]# cd /etc/ansible/roles/
[root@m01 roles]# ansible-galaxy init nfs #nfs目錄位置可以隨意創建
[root@m01 roles]# tree nfs
nfs/ #項目名稱
├── defaults #低優先級變量
│ └── main.yml
├── files #存放文件,存放由copy或script·解壓等模塊調用的文件
├── handlers #觸發器文件
│ └── main.yml
├── meta #依賴關系文件
│ └── main.yml
├── README.md #項目目錄用法
├── tasks #工作任務文件,使用include的時候不需要指明文件的路徑
│ └── main.yml
├── templates #jinja2模板文件(Python變量)
├── tests #測試文件(與-C類似)
│ ├── inventory #測試用的主機清單
│ └── test.yml
└── vars #高優先級變量文件
└── main.yml
[root@m01 roles]# vim site.yml
1.項目目錄里,第一個加載的是meta目錄,查看該項目是否有依賴,有的話先執行該項目的依賴,沒有的話
2.執行tasks目錄下的main.yml文件,如果有copy模塊
3.執行files目錄中找src指定的文件名(#不需要指明路徑)
4.執行tasks中的template模塊,去找template目錄找src指定的文件名(#不需要指明路徑)
5.如果有變量,去找vars目錄main.yml
去找defaults目錄下的main.yml
6.如果有觸發器,在所有的tasks執行完之后,去找handlers目錄下的main.yml
Ansible Roles依賴關系
- ansible 1.3及其以后的版本才支持
roles
允許你再使用roles時自動引入其他的roles。role依賴關系存儲在roles目錄中meta/main.yml文件中。
例如:推送wordpress並解壓,前提條件,必須要安裝nginx和php,把服務跑起來,才能運行wordpress的頁面,此時我們就可以在wordpress的roles中定義依賴nginx和php的roles
[root@m01 roles]# vim /etc/ansible/roles/wordpress/meta/main.yml
dependencies:
- { role: nginx }
- { role: php }
#nginx·php,項目名稱,先執行依賴,再執行該項目
使用Ansible Roles對rsync劇本解耦
1.使用ansible-galaxy創建'任務角色'
[root@m01 rsync]# cd /etc/ansible/roles/
[root@m01 roles]# ansible-galaxy init rsync
- rsync was created successfully
[root@m01 roles]# tree
.
└── rsync
├── defaults ---------------------------- 5.低級變量
│ └── main.yml
├── files -------------------- 3.src指定文件名(不含j2變量)
├── handlers ------------------------------------ 6.觸發器
│ └── main.yml
├── meta --------- 1.項目的依賴目錄
│ └── main.yml --如果有的話,先執行
├── README.md
├── tasks ---------------- 2.任務(include include_tasks)
│ └── main.yml
├── templates ------------------------ 4.python變量,j2模板
├── tests
│ ├── inventory
│ └── test.yml
└── vars --------------------------------- 5.高級變量
└── main.yml
#以組名為文件名
mkdir /etc/ansible/roles/group_vars
2.編輯'主機清單'(選做)
[root@m01 roles]# vim /etc/ansible/roles/hosts
...
3.編輯site.yml,指定roles(可以在這里指定變量),'site.yml是入口文件'(名字隨意)。可以寫多個site,site和tasks的關系類似於包含
[root@m01 roles]# vim /etc/ansible/roles/site.yml
1>列表
- hosts: all
vars:
- user_group: www
- uid_gid: 666
roles:
- rsync #指定的這個角色名是galaxy創建的目錄名,可以指定多個
2>判斷
- hosts: all
roles:
- role: rsync
when: ansible_fqdn is match 'backup*'
3>字典
- hosts: all
roles:
- { role: rsync , when: ansible_fqdn == 'backup' }
4>字典+變量
roles:
- { role: nginx, http_port: 8080, web_root: /data/ }
5>為roles設置觸發條件
- hosts: all
roles:
- { role: some_role, when: "ansible_os_family == 'RedHat'" }
6>為roles設置標簽
- hosts: all
roles:
- { role: nfs, tags: ["bar", "baz"],when: ansible_fqdn is match 'web*' }
- { role: nfs, tags: ["bar", "baz"],when: ansible_fqdn is match 'nfs*' }
4.編輯rsync角色的tasks'任務' (不要寫路徑,路徑無效)
#不要用include_tasks
#直接寫注釋·模塊·動作
[root@m01 roles]# vim /etc/ansible/roles/rsync/tasks/install_rsync.yml
- name: install rsync
yum:
name: rsync
state: present
[root@m01 roles]# vim /etc/ansible/roles/rsync/tasks/config_rsync.yml
- name: config rsync
template:
src: rsyncd.j2
dest: /etc/rsyncd.conf
notify: restart rsyncd
[root@m01 roles]# vim /etc/ansible/roles/rsync/tasks/start_rsync.yml
- name: start rsyncd
service: rsyncd
state: started
[root@m01 roles]# vim /etc/ansible/roles/rsync/tasks/main.yml
- include: install_rsync.yml
- include: config_rsync.yml
- include: start_rsync.yml
5.編輯rsync角色的'handlers'
[root@m01 roles]# vim /etc/ansible/roles/rsync/handlers/main.yml
- name: restart rsyncd
service:
name: rsyncd
state: restarted
6.編輯rsync角色的'files目錄'
[root@m01 roles]# vim /etc/ansible/roles/rsync/files/
7.編輯rsync角色的'template目錄'
[root@m01 roles]# vim /etc/ansible/roles/rsync/template/rsyncd.j2
8.編輯handlers
- name: restart rsyncd
service:
name: rcyncd
state: restarted
9.編輯'變量文件'(vars defaults)
[root@m01 roles]# vim /etc/ansible/roles/rsync/defaults
use_dir_mk: backup
10.'執行roles'
[root@m01 roles]# ansible-playbook rsync site.yml
測試yml語法是否正確
[root@ansible roles]# ansible-playbook -C site.yml
Ansible-galaxy命令格式
ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
init: 初始化本地roles配置
info: 指定roles詳細信息
install: 下載並安裝Galaxy上指定的roles
list: 列出本地已下載的roles
remove: 刪除本地已下載的roles
#查看選項幫助
ansible-galaxy init -–help
ansible-vault
[root@m01 ~]# rpm -ql ansible |egrep -v 'share|lib'
/etc/ansible/ansible.cfg #配置文件
/etc/ansible/hosts #主機清單
/etc/ansible/roles #解耦目錄
/usr/bin/ansible ad-hoc的使用命令
/usr/bin/ansible-2
/usr/bin/ansible-2.7
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-console-2
/usr/bin/ansible-console-2.7
/usr/bin/ansible-doc #查看幫助
/usr/bin/ansible-doc-2
/usr/bin/ansible-doc-2.7
/usr/bin/ansible-galaxy #roles目錄的創建和刪除
/usr/bin/ansible-galaxy-2
/usr/bin/ansible-galaxy-2.7
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook #yml文件的執行命令
/usr/bin/ansible-playbook-2
/usr/bin/ansible-playbook-2.7
/usr/bin/ansible-pull
/usr/bin/ansible-pull-2
/usr/bin/ansible-pull-2.7
/usr/bin/ansible-test
/usr/bin/ansible-vault #加密命令
/usr/bin/ansible-vault-2
/usr/bin/ansible-vault-2.7
[root@m01 tasks]# ansible-vault --help
usage: ansible-vault [-h] [--version] [-v]
{create,decrypt,edit,view,encrypt,encrypt_string,rekey}
1.使用'ansible-vault'加密文件或目錄
[root@m01 tasks]# ansible-vault encrypt main.yml
2.使用'view'查看加密文件的內容
[root@m01 tasks]# ansible-vault view main.yml
Vault password:
---
# tasks file for rsync
- include: install.yml
- include: config_rsync.yml
3.使用'edit'編輯加密文件
[root@m01 tasks]# ansible-vault edit main.yml
4.使用'rekey'更換加密密碼
[root@m01 tasks]# ansible-vault rekey main.yml
5.執行加密的playbook
ansible-playbook include.yml --vault-password-file=ansible.pass
6.創建一個新的加密的目錄或文件
ansible-vault create hello.yml