synchronization
This commit is contained in:
88
CICD/Ansible/Docs/Ansible-Hosts文件配置.md
Normal file
88
CICD/Ansible/Docs/Ansible-Hosts文件配置.md
Normal file
@@ -0,0 +1,88 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible-Hosts文件配置
|
||||
|
||||
**编写 `/etc/ansible/hosts` 文件**
|
||||
|
||||
- 普通写法
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
```
|
||||
|
||||
- 为主机配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
192.168.1.20 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
192.168.1.40 ansible_ssh_port="22" ansible_ssh_user="root" ansible_ssh_pass=""
|
||||
```
|
||||
|
||||
- 为主机组配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
|
||||
[group1:vars]
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
|
||||
[group2:vars]
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
```
|
||||
|
||||
- 为所有主机组配置变量参数
|
||||
|
||||
```bash
|
||||
[group1] # 主机组
|
||||
|
||||
192.168.1.10
|
||||
192.168.1.20
|
||||
|
||||
[group2] # 主机组
|
||||
|
||||
192.168.1.30
|
||||
192.168.1.40
|
||||
|
||||
[all:vars] # 指定所有主机组
|
||||
|
||||
ansible_ssh_port="22" # 填写服务器端口
|
||||
|
||||
ansible_ssh_user="root" # 填写服务器用户
|
||||
|
||||
ansible_ssh_pass="" # 填写服务器密码
|
||||
```
|
||||
|
||||
|
||||
|
164
CICD/Ansible/Docs/Ansible加密.md
Normal file
164
CICD/Ansible/Docs/Ansible加密.md
Normal file
@@ -0,0 +1,164 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible 加密
|
||||
|
||||
- 创建加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault create password.yml
|
||||
```
|
||||
|
||||
> 示例
|
||||
>
|
||||
> ```bash
|
||||
> [root@offends]# ansible-vault create password.yml
|
||||
> New Vault password: # 输入加密密码
|
||||
> Confirm New Vault password: # 二次输入加密密码
|
||||
> ```
|
||||
|
||||
- 指定文件加密
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt /etc/ansible/hosts
|
||||
```
|
||||
|
||||
- 加密字符串
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt_string 123456
|
||||
```
|
||||
|
||||
- 编辑加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault edit password.yml
|
||||
```
|
||||
|
||||
- 重新加密文件
|
||||
|
||||
```bash
|
||||
ansible-vault rekey password.yml
|
||||
```
|
||||
|
||||
- 文件解密
|
||||
|
||||
```bash
|
||||
ansible-vault decrypt password.yml
|
||||
```
|
||||
|
||||
- 查看加密数据文件原文
|
||||
|
||||
```bash
|
||||
ansible-vault view password.yml
|
||||
```
|
||||
|
||||
# 剧本的使用
|
||||
|
||||
- 编写一份 `demo.yml` 剧本文件
|
||||
|
||||
```bash
|
||||
vi demo.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
---
|
||||
- hosts: node1
|
||||
# 定义变量
|
||||
vars:
|
||||
- user_password: !vault |
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
36616162626462323130626563393433663637383166613262333433313534386561666531633837
|
||||
3663636662663363303463313662333064326537343563340a653566346636333633383163623662
|
||||
37386432626437636464386339316366346665383935336564623630333238353661666566343036
|
||||
3338613861393061320a626464306230626265656163613730303035613161616235373539613333
|
||||
6164
|
||||
|
||||
tasks:
|
||||
- name: display variable from encryption variable
|
||||
ansible.builtin.debug:
|
||||
msg: The user password is {{ user_password }}
|
||||
```
|
||||
|
||||
- 通过询问口令执行剧本
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml -v --ask-vault-pass
|
||||
```
|
||||
|
||||
- 从密码文件中读取口令执行剧本
|
||||
|
||||
```bash
|
||||
echo '密钥密码' > .pwdfile && chmod 600 .pwdfile
|
||||
```
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml -v --vault-id .pwdfile
|
||||
```
|
||||
|
||||
# 加密用户密码
|
||||
|
||||
- 创建变量文件
|
||||
|
||||
```bash
|
||||
mkdir vars -p
|
||||
vi vars/user_list.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
user_hosts:
|
||||
- all
|
||||
user_info:
|
||||
- user: demo
|
||||
# 密码需要用引号括起来,避免纯数字密码被解析成int类型数字
|
||||
password: "123456"
|
||||
# 备注信息可以使用中文,但尽量不用中文
|
||||
comment: "hello"
|
||||
```
|
||||
|
||||
- 创建剧本文件
|
||||
|
||||
```bash
|
||||
vi user.yml
|
||||
```
|
||||
|
||||
```yml
|
||||
- hosts: "{{ user_hosts }}"
|
||||
vars_files:
|
||||
- demo.yml
|
||||
tasks:
|
||||
- name: display variable from variable list
|
||||
ansible.builtin.debug:
|
||||
msg: |
|
||||
The username is "{{ item.user }}",
|
||||
the password is "{{ item.password }}",
|
||||
the comment is "{{ item.comment }}".
|
||||
loop: "{{ user_info }}"
|
||||
- name: create users
|
||||
ansible.builtin.user:
|
||||
name: "{{ item.user }}"
|
||||
password: "{{ item.password|password_hash('sha512') }}"
|
||||
comment: "{{ item.comment }}"
|
||||
state: present
|
||||
loop: "{{ user_info }}"
|
||||
become: yes
|
||||
```
|
||||
|
||||
- 加密变量文件
|
||||
|
||||
```bash
|
||||
ansible-vault encrypt vars/user_list.yml
|
||||
```
|
||||
|
||||
- 执行剧本
|
||||
|
||||
```bash
|
||||
ansible-playbook user.yml -v --ask-vault-pass
|
||||
```
|
||||
|
||||
- 查看是否创建用户
|
||||
|
||||
```bash
|
||||
tail -n 1 /etc/passwd
|
||||
```
|
||||
|
||||
|
396
CICD/Ansible/Docs/Ansible模块参数解释以及常用命令.md
Normal file
396
CICD/Ansible/Docs/Ansible模块参数解释以及常用命令.md
Normal file
@@ -0,0 +1,396 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible模块参数解释以及常用命令
|
||||
|
||||
> 太多了,只记少数吧,累~
|
||||
|
||||
## Ansible 基础命令
|
||||
|
||||
- 查看 Ansible 的可用模块
|
||||
|
||||
```bash
|
||||
ansible-doc -l
|
||||
```
|
||||
|
||||
- 测试主机的连通性
|
||||
|
||||
```bash
|
||||
ansible all -m ping
|
||||
```
|
||||
|
||||
- 查看组下所有的IP
|
||||
|
||||
```bash
|
||||
ansible all --list
|
||||
```
|
||||
|
||||
> 使用 -i 指定 hosts 文件位置
|
||||
>
|
||||
> ```bash
|
||||
> -i /etc/ansible/hosts
|
||||
> ```
|
||||
|
||||
## Ansible-Playbook 命令
|
||||
|
||||
- 执行 Playbook
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml
|
||||
```
|
||||
|
||||
- 指定任务执行 Playbook
|
||||
|
||||
```bash
|
||||
ansible-playbook demo.yml --start-at-task="指定任务"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Command
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | --------------------------------------------------- |
|
||||
| command | 要在远程主机上执行的命令。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
| chdir | 在执行命令之前,将当前工作目录更改为指定的目录。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| warn | 控制命令失败时的错误消息显示方式。 |
|
||||
| stdin | 将输入发送到命令的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的命令,无需使用`command`关键字。 |
|
||||
|
||||
- 先切换目录,执行命令
|
||||
|
||||
```bash
|
||||
ansible all -m command -a 'chdir=/mnt ls -la'
|
||||
```
|
||||
|
||||
- 检查节点的内存情况
|
||||
|
||||
```bash
|
||||
ansible -m command -a "free -m " 'all'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Shell
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------ |
|
||||
| cmd | 要在远程主机上执行的命令。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
| chdir | 在执行命令之前,将当前工作目录更改为指定的目录。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| warn | 控制命令失败时的错误消息显示方式。 |
|
||||
| stdin | 将输入发送到命令的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的命令,无需使用`cmd`关键字。 |
|
||||
| executable | 用于执行命令的可执行文件的路径。 |
|
||||
| creates | 如果指定的文件或目录存在,则命令不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则命令不会被执行。 |
|
||||
|
||||
- 使用 /bin/bash 执行命令
|
||||
|
||||
```bash
|
||||
ansible all -m shell -a 'executable=/bin/bash ls -la /mnt'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Script
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------ |
|
||||
| script | 要在远程主机上执行的脚本文件的路径。 |
|
||||
| creates | 如果指定的文件或目录存在,则脚本不会被执行。 |
|
||||
| removes | 如果指定的文件或目录不存在,则脚本不会被执行。 |
|
||||
| chdir | 在执行脚本之前,将当前工作目录更改为指定的目录。 |
|
||||
| warn | 控制脚本失败时的错误消息显示方式。 |
|
||||
| executable | 用于执行脚本的解释器的路径。 |
|
||||
| stdin | 将输入发送到脚本的标准输入。 |
|
||||
| stdin_add_newline | 在发送到标准输入之前是否添加新行。 |
|
||||
| strip_empty_ends | 控制在输出中删除空行的方式。 |
|
||||
| free_form | 允许直接传递要执行的脚本路径,无需使用`script`关键字。 |
|
||||
|
||||
- 编写一个脚本
|
||||
|
||||
```bash
|
||||
cat << EOF > demo.sh
|
||||
date
|
||||
EOF
|
||||
```
|
||||
|
||||
- 执行脚本
|
||||
|
||||
```bash
|
||||
ansible all -m script -a "/etc/ansible/demo.sh"
|
||||
```
|
||||
|
||||
|
||||
## Ansible 常用模块 Copy
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| -------------- | ------------------------------------------------------------ |
|
||||
| src | 源文件路径。 |
|
||||
| dest | 目标文件路径。 |
|
||||
| backup | 是否备份目标文件。 |
|
||||
| remote_src | 如果为true,则从控制节点的文件系统复制文件到远程主机。 |
|
||||
| checksum | 控制是否使用校验和来判断文件是否需要复制。 |
|
||||
| content | 如果为true,则在Ansible控制节点上生成文件内容并将其传输到远程主机上。 |
|
||||
| directory_mode | 在创建目录时设置权限模式。 |
|
||||
| force | 强制复制文件,即使目标文件存在。 |
|
||||
| owner | 设置目标文件的所有者。 |
|
||||
| group | 设置目标文件的所属组。 |
|
||||
| mode | 设置目标文件的权限模式。 |
|
||||
| seuser | 设置目标文件的SELinux用户。 |
|
||||
| serole | 设置目标文件的SELinux角色。 |
|
||||
| setype | 设置目标文件的SELinux类型。 |
|
||||
| selevel | 设置目标文件的SELinux等级。 |
|
||||
| follow | 是否跟随符号链接。 |
|
||||
|
||||
|
||||
- 拷贝文件
|
||||
|
||||
```bash
|
||||
ansible all -m copy -a "src=/etc/ansible/demo.sh owner=root mode=777 dest=/mnt/demo.sh backup=yes"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 File
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| -------------- | ------------------------------------------------------------ |
|
||||
| path | 文件或目录的路径。 |
|
||||
| state | 文件或目录的状态。可选值包括:file、directory、link、hard、absent。 |
|
||||
| owner | 设置文件或目录的所有者。 |
|
||||
| group | 设置文件或目录的所属组。 |
|
||||
| mode | 设置文件或目录的权限模式。 |
|
||||
| dest | 用于创建符号链接的目标文件路径。 |
|
||||
| src | 用于创建硬链接的源文件路径。 |
|
||||
| state | 设置文件或目录的状态。 |
|
||||
| follow | 是否遵循符号链接。 |
|
||||
| recurse | 是否递归操作,用于目录。 |
|
||||
| directory_mode | 用于设置目录的权限模式。 |
|
||||
| force | 是否强制执行。 |
|
||||
| selevel | 设置目标文件的SELinux等级。 |
|
||||
| serole | 设置目标文件的SELinux角色。 |
|
||||
| setype | 设置目标文件的SELinux类型。 |
|
||||
| seuser | 设置目标文件的SELinux用户。 |
|
||||
|
||||
|
||||
- 创建文件
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile state=touch'
|
||||
```
|
||||
|
||||
- 创建目录
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demodir state=directory'
|
||||
```
|
||||
|
||||
- 修改文件的所有人
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile owner=docker'
|
||||
```
|
||||
|
||||
- 删除文件或目录
|
||||
|
||||
```bash
|
||||
ansible all -m file -a 'path=/mnt/demofile state=absent'
|
||||
ansible all -m file -a 'path=/mnt/demodir state=absent'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Archive
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------- | ------------------------------------------------------ |
|
||||
| path | 要打包的文件或目录的路径。 |
|
||||
| dest | 打包文件的目标路径,包括文件名和扩展名。 |
|
||||
| format | 打包格式,可选值包括:tar、gz、bz2、tar.gz、tar.bz2。 |
|
||||
| owner | 设置打包文件的所有者。 |
|
||||
| group | 设置打包文件的所属组。 |
|
||||
| mode | 设置打包文件的权限模式。 |
|
||||
| remote_src | 如果为true,则从控制节点的文件系统打包文件到远程主机。 |
|
||||
| remove_path | 在归档中排除的路径的前缀。 |
|
||||
| exclude | 排除指定的文件或目录。 |
|
||||
| extra_opts | 传递给归档命令的额外选项。 |
|
||||
|
||||
- 打包文件
|
||||
|
||||
```bash
|
||||
ansible all -m archive -a "path=/mnt/demo.sh dest=/mnt/demo.gz format=gz"
|
||||
```
|
||||
|
||||
> 解压使用
|
||||
>
|
||||
> ```bash
|
||||
> gzip -d demo.gz
|
||||
> ```
|
||||
|
||||
## Ansible 常用模块 Cron
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ------------ | ------------------------------------------------------------ |
|
||||
| name | Cron任务的名称。 |
|
||||
| minute | 设置分钟字段。可接受数字(0-59)、星号(*,表示每分钟)或范围(例如:0-30,表示0到30分钟之间)。 |
|
||||
| hour | 设置小时字段。可接受数字(0-23)、星号(*,表示每小时)或范围。 |
|
||||
| day | 设置天字段。可接受数字(1-31)、星号(*,表示每天)或范围。 |
|
||||
| month | 设置月份字段。可接受数字(1-12)、星号(*,表示每月)或范围。 |
|
||||
| weekday | 设置星期字段。可接受数字(0-6,0代表星期日)、星号(*,表示每天)或范围。 |
|
||||
| job | Cron任务要执行的命令或脚本。 |
|
||||
| state | 设置Cron任务的状态。可选值包括:present(存在)或absent(不存在)。 |
|
||||
| disabled | 是否禁用Cron任务。如果设置为yes,则Cron任务将被禁用。 |
|
||||
| user | 设置Cron任务的所有者。 |
|
||||
| minute | 设置分钟字段。 |
|
||||
| hour | 设置小时字段。 |
|
||||
| day | 设置天字段。 |
|
||||
| month | 设置月份字段。 |
|
||||
| weekday | 设置星期字段。 |
|
||||
| special_time | 设置特殊时间值,如@reboot(重启时运行)或@daily(每天运行)。 |
|
||||
|
||||
- 生成定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2'
|
||||
```
|
||||
|
||||
- 禁止该定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=yes'
|
||||
```
|
||||
|
||||
- 重新开启该定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 disabled=no'
|
||||
```
|
||||
|
||||
- 删除定时任务
|
||||
|
||||
```bash
|
||||
ansible all -m cron -a 'job="echo hello" name=demo minute=*/2 state=absent'
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Yum
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------- |
|
||||
| name | 指定要安装或删除的软件包名称。 |
|
||||
| state | 指定软件包的状态。可选值包括:present、latest、absent。 |
|
||||
| enablerepo | 指定要启用的存储库。 |
|
||||
| disablerepo | 指定要禁用的存储库。 |
|
||||
| disable_excludes | 指定要禁用的软件包类型。 |
|
||||
| update_cache | 是否更新缓存。 |
|
||||
| disable_gpg_check | 是否禁用GPG检查。 |
|
||||
| installroot | 安装软件包的根目录。 |
|
||||
| security | 是否仅安装安全更新。 |
|
||||
| bugfix | 是否只安装修复错误的更新。 |
|
||||
| enhancement | 是否只安装增强更新。 |
|
||||
| ts | 是否使用指定的事务ID。 |
|
||||
|
||||
- 安装软件
|
||||
|
||||
```bash
|
||||
ansible all -m yum -a "name=wget state=present"
|
||||
```
|
||||
|
||||
- 卸载软件
|
||||
|
||||
```bash
|
||||
ansible all -m yum -a "name=wget state=absent"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 Dnf
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ----------------- | ------------------------------------------------------- |
|
||||
| name | 指定要安装或删除的软件包名称。 |
|
||||
| state | 指定软件包的状态。可选值包括:present、latest、absent。 |
|
||||
| enablerepo | 指定要启用的存储库。 |
|
||||
| disablerepo | 指定要禁用的存储库。 |
|
||||
| disable_excludes | 指定要禁用的软件包类型。 |
|
||||
| update_cache | 是否更新缓存。 |
|
||||
| disable_gpg_check | 是否禁用GPG检查。 |
|
||||
| installroot | 安装软件包的根目录。 |
|
||||
| security | 是否仅安装安全更新。 |
|
||||
| bugfix | 是否只安装修复错误的更新。 |
|
||||
| enhancement | 是否只安装增强更新。 |
|
||||
| ts | 是否使用指定的事务ID。 |
|
||||
|
||||
## Ansible 常用模块 Service
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| ------------- | ------------------------------------------------------------ |
|
||||
| name | 指定要管理的服务名称。 |
|
||||
| state | 指定服务的状态。可选值包括:started、stopped、restarted、reloaded、enabled、disabled。 |
|
||||
| enabled | 是否设置服务开机自启动。 |
|
||||
| pattern | 用于匹配要操作的服务的模式。 |
|
||||
| sleep | 在重新启动服务之前等待的时间(以秒为单位)。 |
|
||||
| arguments | 传递给服务启动脚本的额外参数。 |
|
||||
| runlevel | 设置服务在特定运行级别下的启用状态。 |
|
||||
| daemon_reload | 在重启或重新加载服务之后是否重新加载守护程序。 |
|
||||
| force | 是否强制执行操作。 |
|
||||
|
||||
- 重启服务
|
||||
|
||||
```bash
|
||||
ansible all -m service -a "name=docker state=restarted"
|
||||
```
|
||||
|
||||
## Ansible 常用模块 User
|
||||
|
||||
**常用参数**
|
||||
|
||||
| 参数 | 解释 |
|
||||
| --------------- | ----------------------------------------- |
|
||||
| name | 用户名。 |
|
||||
| state | 用户的状态。可选值包括:present、absent。 |
|
||||
| uid | 用户的UID。 |
|
||||
| password | 用户的密码。 |
|
||||
| group | 用户所属的主组。 |
|
||||
| groups | 用户所属的其他组。 |
|
||||
| append | 是否追加用户到附加的组中。 |
|
||||
| shell | 用户的登录Shell。 |
|
||||
| home | 用户的主目录。 |
|
||||
| move_home | 是否移动用户的主目录。 |
|
||||
| createhome | 是否创建用户主目录。 |
|
||||
| system | 是否创建系统用户。 |
|
||||
| update_password | 是否更新密码。 |
|
||||
| expire | 设置用户的账号过期日期。 |
|
||||
| remove | 是否删除用户的主目录。 |
|
||||
|
||||
- 创建用户
|
||||
|
||||
```bash
|
||||
ansible all -m user -a "name=demo state=present"
|
||||
```
|
||||
|
||||
- 删除用户
|
||||
|
||||
```bash
|
||||
ansible all -m user -a "name=demo state=absent"
|
||||
```
|
||||
|
||||
|
||||
|
19
CICD/Ansible/Docs/Ansible编写与配置.md
Normal file
19
CICD/Ansible/Docs/Ansible编写与配置.md
Normal file
@@ -0,0 +1,19 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible编写与配置
|
||||
|
||||
- 第一步禁用SSH主机密钥检查
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/ansible.cfg
|
||||
```
|
||||
|
||||
解除 `host_key_checking` 注释
|
||||
|
||||
```bash
|
||||
[defaults]
|
||||
host_key_checking = False
|
||||
```
|
||||
|
||||
> 通常,当你连接到一个新的SSH主机时,SSH客户端会询问你是否要接受该主机的公钥。这个公钥将被保存到`known_hosts`文件中,以便将来的连接可以验证主机的身份。将`host_key_checking`设置为`False`会关闭这个验证步骤。
|
||||
|
62
CICD/Ansible/Docs/Ansible配置免密.md
Normal file
62
CICD/Ansible/Docs/Ansible配置免密.md
Normal file
@@ -0,0 +1,62 @@
|
||||
> 本文作者:丁辉
|
||||
|
||||
# Ansible 配置免密
|
||||
|
||||
**配置主机**
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/hosts
|
||||
```
|
||||
|
||||
```bash
|
||||
[ssh]
|
||||
|
||||
192.168.1.10
|
||||
```
|
||||
|
||||
## SHELL配置免密
|
||||
|
||||
- 执行脚本
|
||||
|
||||
```bash
|
||||
bash /etc/ansible/ssh-copy.sh
|
||||
```
|
||||
|
||||
> 脚本会自动获取 `/etc/ansible/hosts` 内地址信息进行免密
|
||||
|
||||
## YML 配置服务器免密登录
|
||||
|
||||
- 编辑 SSH 主机配置文件填写服务器信息
|
||||
|
||||
```bash
|
||||
vi /etc/ansible/ssh-hosts
|
||||
```
|
||||
|
||||
> 内容如下
|
||||
>
|
||||
> ```yml
|
||||
> [ssh] # 主机组
|
||||
>
|
||||
> # 192.168.1.[10:11] # 批量
|
||||
> # 192.168.1.10 # 单台
|
||||
> 192.168.1.10
|
||||
>
|
||||
> [ssh:vars] # 指定主机组中的共享变量
|
||||
>
|
||||
> ansible_ssh_user="root" # 填写服务器用户
|
||||
>
|
||||
> ansible_ssh_pass="" # 填写服务器密码
|
||||
> ```
|
||||
|
||||
- 执行免密
|
||||
|
||||
```bash
|
||||
ansible-playbook -i /etc/ansible/ssh-hosts /etc/ansible/key.yml
|
||||
```
|
||||
|
||||
- 验证
|
||||
|
||||
```bash
|
||||
ansible all -a ls
|
||||
```
|
||||
|
Reference in New Issue
Block a user