first commit

This commit is contained in:
iProbe 2022-10-18 16:59:37 +08:00
commit ba848e218d
1001 changed files with 152333 additions and 0 deletions

54
Ansible/Ansible基础.md Normal file
View file

@ -0,0 +1,54 @@
### 配置文件
```
/etc/ansible/ansible.cfg ## 主配置文件
/etc/ansible/hosts ## 主机清单
/etc/ansible/roles/ ## 角色目录
```
### 列出ansible模块
```
ansible-doc -l
```
#### 查看模块帮助文档
```
ansible-doc ping # 查看ping模块的帮助文档详细
ansible-doc -s ping # 查看ping模块的帮助文档简略
```
## 命令格式
```
ansible <host-pattern> [-m moudule_name] [-a args]
```
#### 查看主机列表中的主机
```
ansible <host-pattern> --list-hosts
```
#### 提示输入密码
```
-k或--key-pass
```
#### 执行操作的用户
```
-u或--user=REMOTE-USER
```
#### 逻辑与
```
ansible "webserver:&dbserver" -m ping ## 执行操作的主机在两个主机组中都存在
```
#### 逻辑非
```
ansible 'webserver:!dbserver' -m ping ## 执行操作的主机在webserver组中但不在dbserver中
```
### ansible-vault
```
ansible-vault encrypt xxx.yaml ## 加密
ansible-vault decrypt xxx.yaml ## 解密
```

66
Ansible/playbook基础.md Normal file
View file

@ -0,0 +1,66 @@
```
---
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running
service: name=httpd state=started
handlers:
- name: restart apache
service: name=httpd state=restarted
```
#### 主机与用户
你可以为 playbook 中的每一个 play,个别地选择操作的目标机器是哪些,以哪个用户身份去完成要执行的步骤called tasks
hosts 行的内容是一个或多个组或主机的 patterns,以逗号为分隔符,remote_user 就是账户名
```
---
- hosts: webservers
remote_user: root
```
在每一个 task 中,可以定义自己的远程用户
```
---
- hosts: webservers
remote_user: root
tasks:
- name: test connection
ping:
remote_user: yourname
```
支持从 sudo 执行命令
```
---
- hosts: webservers
remote_user: yourname
sudo: yes
```
可以仅在一个 task 中,使用 sudo 执行命令,而不是在整个 play 中使用 sudo
```
---
- hosts: webservers
remote_user: yourname
tasks:
- service: name=nginx state=started
sudo: yes
```
可以登陆后,sudo 到不同的用户身份,而不是使用 root
```
---
- hosts: webservers
remote_user: yourname
sudo: yes
sudo_user: postgres
```
需要在使用 sudo 时指定密码,可在运行 ansible-playbook 命令时加上选项 --ask-sudo-pass (-K). 如果使用 sudo 时,playbook 疑似被挂起,可能是在 sudo prompt 处被卡住,这时可执行 Control-C 杀死卡住的任务,再重新运行一次
#### Tasks 列表

52
Ansible/角色(Role).md Normal file
View file

@ -0,0 +1,52 @@
角色role用于层次化结构化组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。
目录结构如下:
```
site.yml
webservers.yml
fooservers.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
webservers/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
```
yml文件用于定义此角色用到的各handler在handler中使用include包含的其他的handler文件也应该位于此目录中
files目录存放由copy或script等模块调用的文件
templates目录templates模块会自动在此目录中寻找Jinja2模板文件
tasks目录至少应该包含一个名为main.yml的文件其定义了此角色的任务列表此文件可以使用include包含其他的位于此目录中的task文件
handlers目录此目录中应当包含一个main
vars目录应当包含一个main.yml文件用于定义此角色用到的变量
meta目录应当包含一个main.yml文件用于定义此角色的特殊设定及其依赖关系ansible 1.3及其以后的版本才支持
default目录为当前角色设定默认变量时使用此目录应当包含一个main.yml文件
那么一个playbook就可以这样写
```
---
- hosts: webservers
roles:
- common
- webservers
```
这个 playbook 为一个角色 x 指定了如下的行为:
如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 将被添加到 play 中
如果roles/x/handlers/main.yml 存在, 其中列出的 handlers 将被添加到 play 中
如果roles/x/vars/main.yml 存在, 其中列出的 variables 将被添加到 play 中
如果roles/x/meta/main.yml 存在, 其中列出的 “角色依赖” 将被添加到 roles 列表中 (1.3 andlater)
所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
所有 scripttasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
所有 template tasks 可以引用roles/x/templates/ 中的文件,不需要指明文件的路径。
所有 include tasks 可以引用roles/x/tasks/ 中的文件,不需要指明文件的路径。