最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

ansible

IT圈 admin 7浏览 0评论

ansible

一:介绍 

Ansible 的 Galaxy 工具,类似程序员使用的 github,docker 镜像仓库,yum仓库和deb仓库等。可以将自己编写的 Role 通过 Galaxy 这个平台进行分享。同样,我们也可以通过 Galaxy 这个平台去获取一些我们想要的 Role

Galaxy 官网:

ansible-galaxy 则是一个使用 Galaxy 命令行的工具。

二进制文件一般不放到角色中管理,因此我们下载的角色基本都是文本文件
galaxy有银河、星系的意思,没啥特殊含义,就是起了这么个名字

1.获取帮助信息

[root@jettoloader test]# ansible-galaxy -h
usage: ansible-galaxy [-h] [--version] [-v] TYPE ...Perform various Role and Collection related operations.positional arguments:TYPEcollection   Manage an Ansible Galaxy collection.role         Manage an Ansible Galaxy role.optional arguments:--version      show program's version number, config file location,configured module search path, module location, executablelocation and exit-h, --help     show this help message and exit-v, --verbose  verbose mode (-vvv for more, -vvvv to enable connectiondebugging)

1.1 ansible-galaxy role:        

[root@jettoloader test]# ansible-galaxy role -h
usage: ansible-galaxy role [-h] ROLE_ACTION ...positional arguments:ROLE_ACTIONinit       Initialize new role with the base structure of a role. 初始化新角色的基本结构remove     Delete roles from roles_path.从角色路径中删除角色。delete     Removes the role from Galaxy. It does not remove or alter theactual GitHub repository. 从Galaxy中删除角色。它不会删除或更改实际的GitHub存储库list       Show the name and version of each role installed in theroles_path.查看角色列表search     Search the Galaxy database by tags, platforms, author andmultiple keywords.搜索角色import     Import a role.导入角色setup      Manage the integration between Galaxy and the given source.管理Galaxy和给定源之间的集成info       View more details about a specific role.查看有关特定角色的详细信息install    Install role(s) from file(s), URL(s) or Ansible Galaxy.从文件、URL或Ansible Galaxy安装角色optional arguments:-h, --help   show this help message and exit

 1.2 ansible-galaxy collection: 

[root@jettoloader test]# ansible-galaxy collection -h
usage: ansible-galaxy collection [-h] COLLECTION_ACTION ...positional arguments:COLLECTION_ACTIONinit             Initialize new collection with the base structure of acollection.使用集合的基本结构初始化新集合build            Build an Ansible collection artifact that can be publishto Ansible Galaxy.构建一个可发布到Ansible Galaxy的Ansible集合工件publish          Publish a collection artifact to Ansible Galaxy.向Ansible Galaxy发布一个集合工件install          Install collection(s) from file(s), URL(s) or AnsibleGalaxy.从文件、URL或Ansible Galaxy安装集合optional arguments:-h, --help         show this help message and exit

1.3 Collections 和role关系:

       Collections是Ansible比较新的版本引入的一个概念,它是roles的集合,比如我们可以把很多相关的roles定义成Collections。以下在galaxy 可以看到

Collections:

 roles:

大家执行下载命令的时候也可以看到,基本上都是到github上去下载的,毕竟这些roles只是一组文本文件,文件大小都不大,我们也可以自己去github上下载并解压,不过那样还是有些麻烦。

1.4 常用指令

1.4.1)在 galaxy 上搜索共享的 role

[root@jettoloader test]# ansible-galaxy search nginxFound 1641 roles matching your search. Showing first 1000.Name                                                    Description----                                                    -----------0x0i.prometheus                                         Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit0x5a17ed.ansible_role_netbox                            Installs and configures NetBox, a DCIM suite, in a production setting.1davidmichael.ansible-role-nginx                        Nginx installation for Linux, FreeBSD and OpenBSD.1it.sudo                                                Ansible role for managing sudoers

1.4.2)安装 galaxy 上共享的 role

[root@jettoloader test]# ansible-galaxy role install -v -p ./ nginx

参考资料

ansible详解之部署简介和使用_码农崛起-CSDN博客

.html

.html

二 案例 nfs

2.1 主机规划

主机名称操作系统版本内网IP安装软件
172.16.10.21CentOS7.5172.16.10.21ansible
172.16.10.15CentOS7.5172.16.10.15不用安装
172.16.10.5CentOS7.5172.16.10.5不用安装

2.2 添加用户账号

说明:

1、 运维人员使用的登录账号;

2、 所有的业务都放在 /app/jettech 下「jettech用户的家目录」,避免业务数据乱放;

3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 jettech用户也进行了 sudo 提权)。

# 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录并指定用户密码
# sudo提权
# 让其它普通用户可以进入该目录查看信息[root@jettoloader k3s-ansible-master]# mkdir /app
[root@jettoloader k3s-ansible-master]# useradd -u 1050  -d /app/jettech -m jettech 
[root@jettoloader k3s-ansible-master]# echo '123456aA' | /usr/bin/passwd --stdin jettech
Changing password for user jettech.
passwd: all authentication tokens updated successfully.
[root@jettoloader k3s-ansible-master]# echo "jettech  ALL=(ALL)       NOPASSWD: ALL" >>  /etc/sudoers
[root@jettoloader k3s-ansible-master]# chmod 755 /app

2.3 Ansible 配置清单Inventory

 之后文章都是如下主机配置清单

[root@jettoloader jettech]# cd /app/jettech/
[root@jettoloader jettech]# mkdir ansible[root@jettoloader ansible]# pwd
/app/jettech/ansible
[root@jettoloader ansible]# cat hosts.ini 
[master]
#172.16.10.5  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#方式1 别名 + 主机 + 端口 + 密码
#web01 ansible_ssh_host=172.16.1.183 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#web02 ansible_ssh_host=172.16.1.184 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#web03 ansible_ssh_host=172.16.1.185 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
# 方式2、主机 + 端口 + 密钥
172.16.10.5:22 #[master:vars][node]
#172.16.10.15 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
172.16.10.15
172.16.10.21[k3s_cluster:children]
master
node[registry]
172.16.10.21

2.4 Ansible Roles 基本概述

前面已经学习了 变量、tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?

使用 roles。roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。以便 playbook 更好的调用。相比 playbook,roles 的结构更加的清晰有层次。

2.5 Roles 目录结构

在 roles 目录下,可以使用如下命令创建目录

[root@jettoloader ansible]# mkdir ansible_roles
[root@jettoloader ansible]# cd ansible_roles/
[root@jettoloader ansible_roles]# ansible-galaxy role init roles/nfs[root@jettoloader ansible]# tree 
.
├── ansible_roles
│   └── roles 
│       └── nfs                       #角色名称
│           ├── defaults              # 角色默认变量(最低优先级)
│           │   └── main.yml
│           ├── files                 # 文件存放
│           ├── handlers              # 触发任务
│           │   └── main.yml
│           ├── meta                  # 依赖关系
│           │   └── main.yml
│           ├── README.md             # 使用说明
│           ├── tasks                 # 具体任务
│           │   └── main.yml 
│           ├── templates             # 模板文件
│           ├── tests                 # 本role测试
│           │   ├── inventory
│           │   └── test.yml
│           └── vars                  # 角色其他变量
│               └── main.yml
└── hosts.ini                         # 主机信息

目录说明:

1、首先要有 roles 目录,然后在 roles 目录下创建相应的目录。

2、roles 下的目录名最好见文知意,如 common 目录表示基础目录,是必要的;nfs 目录表示安装 nfs 服务;redis目录表示安装 redis服务;等等。

3、可以根据自身需要创建 roles 下的二级目录,不需要的目录可以不创建,没需要全目录创建。

4、roles 目录下的二级目录中,有些目录必须包含一个 main.yml 文件,以便 ansible 使用。

2.6 Roles 依赖关系

roles 允许在使用 role 时自动引入其他 role。roles 的依赖关系存储在 role 目录中的 meta/main.yml 文件中。

例如:安装 nfs是需要先确保 nginx和 vfstpd 都能正常运行,此时都可以在 nfs的 role 中定义依赖 nginx和vfstpd的 role。

[root@jettoloader ansible]# cat ansible_roles/roles/nfs/meta/main.yml 
---
dependencies:- { role: nginx }- { role: vfstpd}

此时 nfs 的 role 会先执行 nginx的 role,然后执行mysql 的 role,最后再执行 nfs 本身的 role。

2.7 Ansible Roles 案例-部署 NFS 服务

2.7.1)整体目录结构

[root@jettoloader ansible_roles]# pwd
/app/jettech/ansible/ansible_roles
[root@jettoloader ansible_roles]# ll
total 4
-rw-r--r--  1 root root 55 Feb  9 10:39 all.yml
drwxr-xr-x. 2 root root 41 Feb  9 10:31 group_vars
drwxr-xr-x  3 root root 17 Feb  9 10:14 roles
[root@jettoloader ansible_roles]# tree
.
├── all.yml                         
├── group_vars                      #全局变量
│   └── all.yml
└── roles├── nfs                         # 服务端│   ├── defaults│   │   └── main.yml│   ├── files│   ├── handlers│   │   └── main.yml│   ├── meta│   │   └── main.yml│   ├── README.md│   ├── tasks│   │   ├── config.yml│   │   ├── install.yml│   │   ├── main.yml│   │   ├── mkdir.yml│   │   ├── start_NFS.yml│   │   └── start_rpcbind.yml│   ├── templates│   │   └── exports.j2│   ├── tests│   │   ├── inventory│   │   └── test.yml│   └── vars│       └── main.yml└── nfs_client                      #客户端├── defaults│   └── main.yml├── files├── handlers│   └── main.yml├── meta│   └── main.yml├── README.md├── tasks│   └── main.yml├── templates├── tests│   ├── inventory│   └── test.yml└── vars└── main.yml

2.7.2)整体目录结构服务端信息

目录结构

[root@jettoloader ansible_roles]# tree roles/nfs
roles/nfs
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   ├── config.yml
│   ├── install.yml
│   ├── main.yml
│   ├── mkdir.yml
│   ├── start_NFS.yml
│   └── start_rpcbind.yml
├── templates
│   └── exports.j2
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml8 directories, 14 files

2.7.2.1)tasks任务目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/tasks/main.yml 
---
# tasks file for roles/nfs
- include_tasks: install.yml
- include_tasks: config.yml
- include_tasks: mkdir.yml
- include_tasks: start_rpcbind.yml
- include_tasks: start_NFS.yml[root@jettoloader ansible_roles]# cat roles/nfs/tasks/install.yml 
- name: "install package NFS "yum:name:- nfs-utils- rpcbindstate: present
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/config.yml 
- name: "NFS server config and edit restart"template:src: exports.j2dest: /etc/exportsowner: rootgroup: rootmode: '644'notify: "reload NFS server"
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/mkdir.yml 
- name: "create NFS dir"file:path: "{{ nfs_dir }}"owner: rootgroup: rootstate: directoryrecurse: yes
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/start_rpcbind.yml 
- name: "rpcbind server start"systemd:name: rpcbindstate: starteddaemon_reload: yesenabled: yes
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/start_NFS.yml 
- name: "NFS server start"systemd:name: nfsstate: starteddaemon_reload: yesenabled: yes

2.7.2.2)handlers任务目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/handlers/main.yml 
---
# handlers file for roles/nfs
- name: "reload NFS server"systemd:name: nfsstate: reloaded

2.7.2.2)模板目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/templates/exports.j2 
{{ nfs_dir }} *(rw,sync,root_squash,all_squash,anonuid=1050,anongid=1050)

2.7.2.3)变量信息

全局的:

[root@jettoloader ansible_roles]# cat group_vars/all.yml 
---
# NFS 服务端目录
nfs_dir: /opt/jettech/work/nfs/data

局部的:


[root@jettoloader ansible_roles]# cat roles/nfs/defaults/main.yml 
---
# defaults file for roles/nfs
nfs_dir: /opt/jettech/work/nfs/data[root@jettoloader ansible_roles]# cat roles/nfs/vars/main.yml 
---
# vars file for roles/nfs[root@jettoloader ansible_roles]#
nfs_dir: /opt/jettech/work/nfs/data

优先级: group_vars/all.yml >  roles/nfs/vars/main.yml  > roles/nfs/defaults/main.yml 

2.7.3)整体目录结构客户端信息

2.7.3.1)目录结构,客户端就比较简单了,就一个挂载任务

[root@jettoloader ansible_roles]# tree roles/nfs_client/
roles/nfs_client/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml8 directories, 8 files

2.7.3.2)tasks任务目录信息 

# vars file for roles/nfs[root@jettoloader ansible_roles]# cat roles/nfs_client/tasks/main.yml
---
# tasks file for roles/nfs_client
- name: "mount NFS server"mount:src: 172.16.10.21:{{ nfs_dir }}path: /mntfstype: nfsopts: defaultsstate: mounted

2.7.4)playbook 信息

[root@jettoloader ansible_roles]# cat all.yml 
---# NFS server
- hosts: registryroles:- nfs- hosts: noderoles:- nfs_client

2.7.5) 任务执行

[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini --syntax-check all.yml   # 语法检测playbook: all.yml
[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini -C  all.yml  # 预执行,测试执行PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] ********************************************** ************************************************************************************************
changed: [172.16.10.21]
changed: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=13   changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini  all.yml  # 执行PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] **********************************************************************************************************************************************
changed: [172.16.10.21]
changed: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=13   changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

2.7.5) 检查各节点挂载 情况:

[root@jettoloader ~]# mount | grep 172
172.16.10.21:/opt/jettech/work/nfs/data on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.10.15,local_lock=none,addr=172.16.10.21)

2.7.6) meta role依赖

nfs的role依赖vsftpd的role

2.7.6.1) 生成vsftpd的role

[root@jettoloader ansible_roles]# ansible-galaxy role init roles/vsftpd
- Role roles/vsftpd was created successfully

2.7.6.2) 编写vsftpd的task

[root@jettoloader ansible_roles]# cat roles/vsftpd/tasks/main.yml 
---
# tasks file for roles/vsftpd- name: install testdebug:msg: "test===============================start"- name: "install package vsftpd ==============="yum:name:- vsftpdstate: present- name: "systemctl enable vsftpd --now=================="systemd:name: vsftpdstate: starteddaemon_reload: yesenabled: yes

以下文件不用动 

[root@jettoloader ansible_roles]# cat all.yml 
---# NFS server
- hosts: registryroles:- nfs- hosts: noderoles:- nfs_client

2.7.6.3)nfs的依赖文件编写:roles/nfs/meta/main.yml 

[root@jettoloader ansible_roles]# cat roles/nfs/meta/main.yml 
galaxy_info:author: wu bodescription: your role descriptioncompany: jettech# If the issue tracker for your role is not on github, uncomment the# next line and provide a value# issue_tracker_url:  Choose a valid license ID from  - some suggested licenses:# - BSD-3-Clause (default)# - MIT# - GPL-2.0-or-later# - GPL-3.0-only# - Apache-2.0# - CC-BY-4.0license: license (GPL-2.0-or-later, MIT, etc)min_ansible_version: 2.9# If this a Container Enabled role, provide the minimum Ansible Container version.# min_ansible_container_version:## Provide a list of supported platforms, and for each platform a list of versions.# If you don't wish to enumerate all versions for a particular platform, use 'all'.# To view available platforms and versions (or releases), visit:#  platforms:# - name: Fedora#   versions:#   - all#   - 25# - name: SomePlatform#   versions:#   - all#   - 1.0#   - 7#   - 99.99galaxy_tags: []# List tags for your role here, one per line. A tag is a keyword that describes# and categorizes the role. Users find roles by searching for tags. Be sure to# remove the '[]' above, if you add tags to this list.## NOTE: A tag is limited to a single word comprised of alphanumeric characters.#       Maximum 20 tags per role.#dependencies: []
dependencies: - { role: vsftpd }# List your role dependencies here, one per line. Be sure to remove the '[]' above,# if you add dependencies to this list.

主要是:

dependencies: - { role: vsftpd }

2.7.6.4)执行

[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini  all.yml PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [vsftpd : install test] ******************************************************************************************************************************************************
ok: [172.16.10.21] => {"msg": "test===============================start"
}TASK [install package vsftpd ===============] *************************************************************************************************************************************
changed: [172.16.10.21]TASK [systemctl enable vsftpd --now==================] ****************************************************************************************************************************
changed: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] **********************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=16   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [root@jettoloader ansible_roles]# 

2.7.6.5)检测:

[root@jettoloader k3s-ansible-master]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2022-02-09 13:54:18 CST; 28s agoMain PID: 1902 (vsftpd)CGroup: /system.slice/vsftpd.service└─1902 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confFeb 09 13:54:18 jettoloader systemd[1]: Starting Vsftpd ftp daemon...
Feb 09 13:54:18 jettoloader systemd[1]: Started Vsftpd ftp daemon.

注意:以下文件不用添加vsftpd的role,因为nfs的meta/main.yaml 文件中已经有依赖的会在nfs之前执行vsftpd。而且vsftpd的role执行的主机和nfs的role是相同的主机

[root@jettoloader ansible_roles]# cat all.yml 
---

# NFS server
- hosts: registry
  roles:
    - nfs

- hosts: node
  roles:
    - nfs_client

ansible

一:介绍 

Ansible 的 Galaxy 工具,类似程序员使用的 github,docker 镜像仓库,yum仓库和deb仓库等。可以将自己编写的 Role 通过 Galaxy 这个平台进行分享。同样,我们也可以通过 Galaxy 这个平台去获取一些我们想要的 Role

Galaxy 官网:

ansible-galaxy 则是一个使用 Galaxy 命令行的工具。

二进制文件一般不放到角色中管理,因此我们下载的角色基本都是文本文件
galaxy有银河、星系的意思,没啥特殊含义,就是起了这么个名字

1.获取帮助信息

[root@jettoloader test]# ansible-galaxy -h
usage: ansible-galaxy [-h] [--version] [-v] TYPE ...Perform various Role and Collection related operations.positional arguments:TYPEcollection   Manage an Ansible Galaxy collection.role         Manage an Ansible Galaxy role.optional arguments:--version      show program's version number, config file location,configured module search path, module location, executablelocation and exit-h, --help     show this help message and exit-v, --verbose  verbose mode (-vvv for more, -vvvv to enable connectiondebugging)

1.1 ansible-galaxy role:        

[root@jettoloader test]# ansible-galaxy role -h
usage: ansible-galaxy role [-h] ROLE_ACTION ...positional arguments:ROLE_ACTIONinit       Initialize new role with the base structure of a role. 初始化新角色的基本结构remove     Delete roles from roles_path.从角色路径中删除角色。delete     Removes the role from Galaxy. It does not remove or alter theactual GitHub repository. 从Galaxy中删除角色。它不会删除或更改实际的GitHub存储库list       Show the name and version of each role installed in theroles_path.查看角色列表search     Search the Galaxy database by tags, platforms, author andmultiple keywords.搜索角色import     Import a role.导入角色setup      Manage the integration between Galaxy and the given source.管理Galaxy和给定源之间的集成info       View more details about a specific role.查看有关特定角色的详细信息install    Install role(s) from file(s), URL(s) or Ansible Galaxy.从文件、URL或Ansible Galaxy安装角色optional arguments:-h, --help   show this help message and exit

 1.2 ansible-galaxy collection: 

[root@jettoloader test]# ansible-galaxy collection -h
usage: ansible-galaxy collection [-h] COLLECTION_ACTION ...positional arguments:COLLECTION_ACTIONinit             Initialize new collection with the base structure of acollection.使用集合的基本结构初始化新集合build            Build an Ansible collection artifact that can be publishto Ansible Galaxy.构建一个可发布到Ansible Galaxy的Ansible集合工件publish          Publish a collection artifact to Ansible Galaxy.向Ansible Galaxy发布一个集合工件install          Install collection(s) from file(s), URL(s) or AnsibleGalaxy.从文件、URL或Ansible Galaxy安装集合optional arguments:-h, --help         show this help message and exit

1.3 Collections 和role关系:

       Collections是Ansible比较新的版本引入的一个概念,它是roles的集合,比如我们可以把很多相关的roles定义成Collections。以下在galaxy 可以看到

Collections:

 roles:

大家执行下载命令的时候也可以看到,基本上都是到github上去下载的,毕竟这些roles只是一组文本文件,文件大小都不大,我们也可以自己去github上下载并解压,不过那样还是有些麻烦。

1.4 常用指令

1.4.1)在 galaxy 上搜索共享的 role

[root@jettoloader test]# ansible-galaxy search nginxFound 1641 roles matching your search. Showing first 1000.Name                                                    Description----                                                    -----------0x0i.prometheus                                         Prometheus - a multi-dimensional time-series data monitoring and alerting toolkit0x5a17ed.ansible_role_netbox                            Installs and configures NetBox, a DCIM suite, in a production setting.1davidmichael.ansible-role-nginx                        Nginx installation for Linux, FreeBSD and OpenBSD.1it.sudo                                                Ansible role for managing sudoers

1.4.2)安装 galaxy 上共享的 role

[root@jettoloader test]# ansible-galaxy role install -v -p ./ nginx

参考资料

ansible详解之部署简介和使用_码农崛起-CSDN博客

.html

.html

二 案例 nfs

2.1 主机规划

主机名称操作系统版本内网IP安装软件
172.16.10.21CentOS7.5172.16.10.21ansible
172.16.10.15CentOS7.5172.16.10.15不用安装
172.16.10.5CentOS7.5172.16.10.5不用安装

2.2 添加用户账号

说明:

1、 运维人员使用的登录账号;

2、 所有的业务都放在 /app/jettech 下「jettech用户的家目录」,避免业务数据乱放;

3、 该用户也被 ansible 使用,因为几乎所有的生产环境都是禁止 root 远程登录的(因此该 jettech用户也进行了 sudo 提权)。

# 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录并指定用户密码
# sudo提权
# 让其它普通用户可以进入该目录查看信息[root@jettoloader k3s-ansible-master]# mkdir /app
[root@jettoloader k3s-ansible-master]# useradd -u 1050  -d /app/jettech -m jettech 
[root@jettoloader k3s-ansible-master]# echo '123456aA' | /usr/bin/passwd --stdin jettech
Changing password for user jettech.
passwd: all authentication tokens updated successfully.
[root@jettoloader k3s-ansible-master]# echo "jettech  ALL=(ALL)       NOPASSWD: ALL" >>  /etc/sudoers
[root@jettoloader k3s-ansible-master]# chmod 755 /app

2.3 Ansible 配置清单Inventory

 之后文章都是如下主机配置清单

[root@jettoloader jettech]# cd /app/jettech/
[root@jettoloader jettech]# mkdir ansible[root@jettoloader ansible]# pwd
/app/jettech/ansible
[root@jettoloader ansible]# cat hosts.ini 
[master]
#172.16.10.5  ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#方式1 别名 + 主机 + 端口 + 密码
#web01 ansible_ssh_host=172.16.1.183 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#web02 ansible_ssh_host=172.16.1.184 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
#web03 ansible_ssh_host=172.16.1.185 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
# 方式2、主机 + 端口 + 密钥
172.16.10.5:22 #[master:vars][node]
#172.16.10.15 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456
172.16.10.15
172.16.10.21[k3s_cluster:children]
master
node[registry]
172.16.10.21

2.4 Ansible Roles 基本概述

前面已经学习了 变量、tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?

使用 roles。roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。以便 playbook 更好的调用。相比 playbook,roles 的结构更加的清晰有层次。

2.5 Roles 目录结构

在 roles 目录下,可以使用如下命令创建目录

[root@jettoloader ansible]# mkdir ansible_roles
[root@jettoloader ansible]# cd ansible_roles/
[root@jettoloader ansible_roles]# ansible-galaxy role init roles/nfs[root@jettoloader ansible]# tree 
.
├── ansible_roles
│   └── roles 
│       └── nfs                       #角色名称
│           ├── defaults              # 角色默认变量(最低优先级)
│           │   └── main.yml
│           ├── files                 # 文件存放
│           ├── handlers              # 触发任务
│           │   └── main.yml
│           ├── meta                  # 依赖关系
│           │   └── main.yml
│           ├── README.md             # 使用说明
│           ├── tasks                 # 具体任务
│           │   └── main.yml 
│           ├── templates             # 模板文件
│           ├── tests                 # 本role测试
│           │   ├── inventory
│           │   └── test.yml
│           └── vars                  # 角色其他变量
│               └── main.yml
└── hosts.ini                         # 主机信息

目录说明:

1、首先要有 roles 目录,然后在 roles 目录下创建相应的目录。

2、roles 下的目录名最好见文知意,如 common 目录表示基础目录,是必要的;nfs 目录表示安装 nfs 服务;redis目录表示安装 redis服务;等等。

3、可以根据自身需要创建 roles 下的二级目录,不需要的目录可以不创建,没需要全目录创建。

4、roles 目录下的二级目录中,有些目录必须包含一个 main.yml 文件,以便 ansible 使用。

2.6 Roles 依赖关系

roles 允许在使用 role 时自动引入其他 role。roles 的依赖关系存储在 role 目录中的 meta/main.yml 文件中。

例如:安装 nfs是需要先确保 nginx和 vfstpd 都能正常运行,此时都可以在 nfs的 role 中定义依赖 nginx和vfstpd的 role。

[root@jettoloader ansible]# cat ansible_roles/roles/nfs/meta/main.yml 
---
dependencies:- { role: nginx }- { role: vfstpd}

此时 nfs 的 role 会先执行 nginx的 role,然后执行mysql 的 role,最后再执行 nfs 本身的 role。

2.7 Ansible Roles 案例-部署 NFS 服务

2.7.1)整体目录结构

[root@jettoloader ansible_roles]# pwd
/app/jettech/ansible/ansible_roles
[root@jettoloader ansible_roles]# ll
total 4
-rw-r--r--  1 root root 55 Feb  9 10:39 all.yml
drwxr-xr-x. 2 root root 41 Feb  9 10:31 group_vars
drwxr-xr-x  3 root root 17 Feb  9 10:14 roles
[root@jettoloader ansible_roles]# tree
.
├── all.yml                         
├── group_vars                      #全局变量
│   └── all.yml
└── roles├── nfs                         # 服务端│   ├── defaults│   │   └── main.yml│   ├── files│   ├── handlers│   │   └── main.yml│   ├── meta│   │   └── main.yml│   ├── README.md│   ├── tasks│   │   ├── config.yml│   │   ├── install.yml│   │   ├── main.yml│   │   ├── mkdir.yml│   │   ├── start_NFS.yml│   │   └── start_rpcbind.yml│   ├── templates│   │   └── exports.j2│   ├── tests│   │   ├── inventory│   │   └── test.yml│   └── vars│       └── main.yml└── nfs_client                      #客户端├── defaults│   └── main.yml├── files├── handlers│   └── main.yml├── meta│   └── main.yml├── README.md├── tasks│   └── main.yml├── templates├── tests│   ├── inventory│   └── test.yml└── vars└── main.yml

2.7.2)整体目录结构服务端信息

目录结构

[root@jettoloader ansible_roles]# tree roles/nfs
roles/nfs
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   ├── config.yml
│   ├── install.yml
│   ├── main.yml
│   ├── mkdir.yml
│   ├── start_NFS.yml
│   └── start_rpcbind.yml
├── templates
│   └── exports.j2
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml8 directories, 14 files

2.7.2.1)tasks任务目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/tasks/main.yml 
---
# tasks file for roles/nfs
- include_tasks: install.yml
- include_tasks: config.yml
- include_tasks: mkdir.yml
- include_tasks: start_rpcbind.yml
- include_tasks: start_NFS.yml[root@jettoloader ansible_roles]# cat roles/nfs/tasks/install.yml 
- name: "install package NFS "yum:name:- nfs-utils- rpcbindstate: present
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/config.yml 
- name: "NFS server config and edit restart"template:src: exports.j2dest: /etc/exportsowner: rootgroup: rootmode: '644'notify: "reload NFS server"
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/mkdir.yml 
- name: "create NFS dir"file:path: "{{ nfs_dir }}"owner: rootgroup: rootstate: directoryrecurse: yes
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/start_rpcbind.yml 
- name: "rpcbind server start"systemd:name: rpcbindstate: starteddaemon_reload: yesenabled: yes
[root@jettoloader ansible_roles]# cat roles/nfs/tasks/start_NFS.yml 
- name: "NFS server start"systemd:name: nfsstate: starteddaemon_reload: yesenabled: yes

2.7.2.2)handlers任务目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/handlers/main.yml 
---
# handlers file for roles/nfs
- name: "reload NFS server"systemd:name: nfsstate: reloaded

2.7.2.2)模板目录信息

[root@jettoloader ansible_roles]# cat roles/nfs/templates/exports.j2 
{{ nfs_dir }} *(rw,sync,root_squash,all_squash,anonuid=1050,anongid=1050)

2.7.2.3)变量信息

全局的:

[root@jettoloader ansible_roles]# cat group_vars/all.yml 
---
# NFS 服务端目录
nfs_dir: /opt/jettech/work/nfs/data

局部的:


[root@jettoloader ansible_roles]# cat roles/nfs/defaults/main.yml 
---
# defaults file for roles/nfs
nfs_dir: /opt/jettech/work/nfs/data[root@jettoloader ansible_roles]# cat roles/nfs/vars/main.yml 
---
# vars file for roles/nfs[root@jettoloader ansible_roles]#
nfs_dir: /opt/jettech/work/nfs/data

优先级: group_vars/all.yml >  roles/nfs/vars/main.yml  > roles/nfs/defaults/main.yml 

2.7.3)整体目录结构客户端信息

2.7.3.1)目录结构,客户端就比较简单了,就一个挂载任务

[root@jettoloader ansible_roles]# tree roles/nfs_client/
roles/nfs_client/
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   └── main.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars└── main.yml8 directories, 8 files

2.7.3.2)tasks任务目录信息 

# vars file for roles/nfs[root@jettoloader ansible_roles]# cat roles/nfs_client/tasks/main.yml
---
# tasks file for roles/nfs_client
- name: "mount NFS server"mount:src: 172.16.10.21:{{ nfs_dir }}path: /mntfstype: nfsopts: defaultsstate: mounted

2.7.4)playbook 信息

[root@jettoloader ansible_roles]# cat all.yml 
---# NFS server
- hosts: registryroles:- nfs- hosts: noderoles:- nfs_client

2.7.5) 任务执行

[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini --syntax-check all.yml   # 语法检测playbook: all.yml
[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini -C  all.yml  # 预执行,测试执行PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] ********************************************** ************************************************************************************************
changed: [172.16.10.21]
changed: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=13   changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini  all.yml  # 执行PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] **********************************************************************************************************************************************
changed: [172.16.10.21]
changed: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=13   changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

2.7.5) 检查各节点挂载 情况:

[root@jettoloader ~]# mount | grep 172
172.16.10.21:/opt/jettech/work/nfs/data on /mnt type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.10.15,local_lock=none,addr=172.16.10.21)

2.7.6) meta role依赖

nfs的role依赖vsftpd的role

2.7.6.1) 生成vsftpd的role

[root@jettoloader ansible_roles]# ansible-galaxy role init roles/vsftpd
- Role roles/vsftpd was created successfully

2.7.6.2) 编写vsftpd的task

[root@jettoloader ansible_roles]# cat roles/vsftpd/tasks/main.yml 
---
# tasks file for roles/vsftpd- name: install testdebug:msg: "test===============================start"- name: "install package vsftpd ==============="yum:name:- vsftpdstate: present- name: "systemctl enable vsftpd --now=================="systemd:name: vsftpdstate: starteddaemon_reload: yesenabled: yes

以下文件不用动 

[root@jettoloader ansible_roles]# cat all.yml 
---# NFS server
- hosts: registryroles:- nfs- hosts: noderoles:- nfs_client

2.7.6.3)nfs的依赖文件编写:roles/nfs/meta/main.yml 

[root@jettoloader ansible_roles]# cat roles/nfs/meta/main.yml 
galaxy_info:author: wu bodescription: your role descriptioncompany: jettech# If the issue tracker for your role is not on github, uncomment the# next line and provide a value# issue_tracker_url:  Choose a valid license ID from  - some suggested licenses:# - BSD-3-Clause (default)# - MIT# - GPL-2.0-or-later# - GPL-3.0-only# - Apache-2.0# - CC-BY-4.0license: license (GPL-2.0-or-later, MIT, etc)min_ansible_version: 2.9# If this a Container Enabled role, provide the minimum Ansible Container version.# min_ansible_container_version:## Provide a list of supported platforms, and for each platform a list of versions.# If you don't wish to enumerate all versions for a particular platform, use 'all'.# To view available platforms and versions (or releases), visit:#  platforms:# - name: Fedora#   versions:#   - all#   - 25# - name: SomePlatform#   versions:#   - all#   - 1.0#   - 7#   - 99.99galaxy_tags: []# List tags for your role here, one per line. A tag is a keyword that describes# and categorizes the role. Users find roles by searching for tags. Be sure to# remove the '[]' above, if you add tags to this list.## NOTE: A tag is limited to a single word comprised of alphanumeric characters.#       Maximum 20 tags per role.#dependencies: []
dependencies: - { role: vsftpd }# List your role dependencies here, one per line. Be sure to remove the '[]' above,# if you add dependencies to this list.

主要是:

dependencies: - { role: vsftpd }

2.7.6.4)执行

[root@jettoloader ansible_roles]# ansible-playbook -b -i ../hosts.ini  all.yml PLAY [registry] *******************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]TASK [vsftpd : install test] ******************************************************************************************************************************************************
ok: [172.16.10.21] => {"msg": "test===============================start"
}TASK [install package vsftpd ===============] *************************************************************************************************************************************
changed: [172.16.10.21]TASK [systemctl enable vsftpd --now==================] ****************************************************************************************************************************
changed: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/install.yml for 172.16.10.21TASK [nfs : install package NFS] **************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/config.yml for 172.16.10.21TASK [nfs : NFS server config and edit restart] ***********************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/mkdir.yml for 172.16.10.21TASK [nfs : create NFS dir] *******************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_rpcbind.yml for 172.16.10.21TASK [nfs : rpcbind server start] *************************************************************************************************************************************************
ok: [172.16.10.21]TASK [nfs : include_tasks] ********************************************************************************************************************************************************
included: /app/jettech/ansible/ansible_roles/roles/nfs/tasks/start_NFS.yml for 172.16.10.21TASK [nfs : NFS server start] *****************************************************************************************************************************************************
ok: [172.16.10.21]PLAY [node] ***********************************************************************************************************************************************************************TASK [Gathering Facts] ************************************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]TASK [nfs_client : mount NFS server] **********************************************************************************************************************************************
ok: [172.16.10.21]
ok: [172.16.10.15]PLAY RECAP ************************************************************************************************************************************************************************
172.16.10.15               : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
172.16.10.21               : ok=16   changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   [root@jettoloader ansible_roles]# 

2.7.6.5)检测:

[root@jettoloader k3s-ansible-master]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemonLoaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)Active: active (running) since Wed 2022-02-09 13:54:18 CST; 28s agoMain PID: 1902 (vsftpd)CGroup: /system.slice/vsftpd.service└─1902 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.confFeb 09 13:54:18 jettoloader systemd[1]: Starting Vsftpd ftp daemon...
Feb 09 13:54:18 jettoloader systemd[1]: Started Vsftpd ftp daemon.

注意:以下文件不用添加vsftpd的role,因为nfs的meta/main.yaml 文件中已经有依赖的会在nfs之前执行vsftpd。而且vsftpd的role执行的主机和nfs的role是相同的主机

[root@jettoloader ansible_roles]# cat all.yml 
---

# NFS server
- hosts: registry
  roles:
    - nfs

- hosts: node
  roles:
    - nfs_client

发布评论

评论列表 (0)

  1. 暂无评论