Ansible Role Publish To Galaxy

摘要

创建Role

  • 在当前目录下创建一个名称为mongodb-install的role,实际上就是创建一个名称为mongodb-install的目录结构

1
ansible-galaxy init mongodb-install
  • 创建完成后,目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mongodb-install
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml

README.md: 这里面配置的是role的描述信息,其会显示在文档一栏中
meta/main.yml,这里面配置的是role的作者信息

上传Role到Github

1
2
3
4
5
6
7
cd mongodb-install
git init
git add .
git commit -m "init"
git branch -M main
git remote add origin https://github.com/hanqunfeng/ansible-role-mongodb.git
git push -u origin main

发布Role到Galaxy

  • 登录https://galaxy.ansible.com/,点击登录,使用Github账号登录。

  • 导入Role

  • 填写Role信息

  • 查看导入状态

  • 搜索Role
    此时我们在角色列表中搜索关键字hanqunfeng,就可以搜索到我们刚刚上传的那个role了

  • 点击进去我们就可以查看角色的详细信息了

修改Role

  • 修改了role信息后,重新上传到github即可

  • 如果同时修改了README.md等role信息,可以在galaxy中重新上传即可

安装Role

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 安装
$ ansible-galaxy role install hanqunfeng.mongodb-install
Starting galaxy role install process
- downloading role 'mongodb-install', owned by hanqunfeng
- downloading role from https://github.com/hanqunfeng/ansible-role-mongodb/archive/main.tar.gz
- extracting hanqunfeng.mongodb-install to /Users/hanqf/.ansible/roles/hanqunfeng.mongodb-install
- hanqunfeng.mongodb-install (main) was installed successfully

# 重新安装
ansible-galaxy role install --force hanqunfeng.mongodb-install

# 查看已安装的role
ansible-galaxy role list

# 删除
$ ansible-galaxy role remove hanqunfeng.mongodb-install
- successfully removed hanqunfeng.mongodb-install

使用Role

  • playbook中引用role

1
2
3
4
5
---
- hosts: test-mongo
become: yes # 切换到root用户下执行
roles:
- hanqunfeng.mongodb-install
  • 执行playbook

1
2
3
4
ansible-playbook -i hosts playbook.yml

# 替换默认的变量
ansible-playbook -i hosts --extra-vars "mongo_port=27019" --extra-vars "mongo_replica_set_name=rs1" playbook.yml

发布指定版本到Galaxy

  • 给角色代码打tag

1
2
3
4
# 创建tag,名称为 v1.0.0
git tag -a v1.0.0 -m "v1.0.0"
# 提交tag
git push origin v1.0.0
  • 在galaxy中重新上传,注意此时在要指定tag名称

  • 上传成功后,就可以在galaxy中查看到对应的版本了

下载指定版本的角色

1
2
3
4
5
6
7
# 注意role和版本号之间用逗号隔开,不加版本号,则下载最新版本
$ ansible-galaxy role install hanqunfeng.mongodb-install,v1.0.0
Starting galaxy role install process
- downloading role 'mongodb-install', owned by hanqunfeng
- downloading role from https://github.com/hanqunfeng/ansible-role-mongodb/archive/v1.0.0.tar.gz
- extracting hanqunfeng.mongodb-install to /Users/hanqf/.ansible/roles/hanqunfeng.mongodb-install
- hanqunfeng.mongodb-install (v1.0.0) was installed successfully

搜索角色

  • 除了在galaxy网站中搜索,还可以通过命令行搜索

1
2
3
4
5
6
7
8
9
10
$ ansible-galaxy search hanqunfeng

Found 1 roles matching your search:

Name Description
---- -----------
hanqunfeng.mongodb-install CentOS 7&8 MongoDB install role

# 或者
ansible-galaxy role search hanqunfeng