【实践】Ansible 部署 Nexus 私服

引言

Nexus是一款功能强大的仓库管理工具,用于存储和管理各种构件(例如JAR文件、Docker镜像、NPM模块等)。使用Ansible自动化Nexus的部署可以简化部署过程、确保一致性,并提高效率。本文将介绍如何使用Ansible来部署Nexus,并提供一些常见的Nexus使用场景示例,同时给出Ansible Playbook的代码示例。

Nexus的使用场景

Nexus在软件开发和部署过程中有广泛的应用场景,包括但不限于以下几个方面:

  1. 依赖管理:Nexus可以存储和管理项目所需的各种依赖项,包括第三方库、插件、构建工具等。这样,开发团队可以方便地访问和共享这些依赖项,提高开发效率和一致性。

  2. 构件发布:Nexus允许开发团队将构件发布到仓库中,供其他团队或项目使用。这样,团队可以轻松地共享和分发构件,避免重复构建和下载。

  3. 快速部署:Nexus可以作为构建工具(如Maven、Gradle)的远程仓库,加快构建和部署过程。开发团队可以从Nexus中快速下载所需的构件,减少构建时间和网络传输。

  4. 安全和权限控制:Nexus提供了灵活的安全机制和权限控制,可以限制对仓库中构件的访问和操作。这样,可以确保只有授权的用户和团队可以访问和管理构件,提高数据安全性和保密性。

Ansible 部署 Nexus

1 配置 Ansible Inventory

创建一个名为 deploy-nexus-host.ini 的 主机清单文件

[deploy]
aliyun_ecs ansible_ssh_host=47.96.125.179 ansible_ssh_port=22 ansible_user=ecs-user ansible_ssh_pass=Ecs-user123 ansible_sudo_pass=Ecs-user123

2 准备开机服务脚本

创建一个名为 nexus-supervisord.ini.j2 的开机配置文件

[program:nexus]
environment=JAVA_HOME="{{ java_home }}"                                     ;
directory=/home/{{ nexus_install_user }}/{{ nexus_home_name }}                     ;
command=/home/{{ nexus_install_user }}/{{ nexus_home_name }}/bin/nexus run ;
stopsignal=KILL                             ;
stderr_logfile=/var/log/supervisor/nexus.err ;
stdout_logfile=/var/log/supervisor/nexus.out ;
stdout_logfile_maxbytes=10MB                        ;
stdout_logfile_backups=10                           ;
user={{ nexus_install_user }}                       ;
umask=022                                           ;
autostart=true                                      ;
autorestart=true                                    ;
startsecs=10                                        ;
startretries=3                                      ;
stopasgroup=true                                    ;
killasgroup=true                                    ;
redirect_stderr=false                               ;

3 Ansible Playbook

# Task Nexus
- name: 安装 Nexus
  hosts: deploy
  become: true
  vars:
    java_home: '/home/ecs-user/amazon-corretto-8.382.05.1-linux-x64'
    nexus_version: 8.0.34
    nexus_home_name: "nexus-3.58.1-02"
    nexus_tar_name: "{{ nexus_home_name }}-unix.tar.gz"
    nexus_down_baseurl: "https://i-ansible.oss-cn-hangzhou-internal.aliyuncs.com"
    nexus_install_user: ecs-user
  tasks:
    - name: 下载 Linux 通用包
      ansible.builtin.get_url:
        url: "{{ nexus_down_baseurl }}/{{ nexus_tar_name }}"
        validate_certs: false
        dest: "/tmp/{{ nexus_tar_name }}"
        mode: "0644"
        force: true
        owner: "{{ nexus_install_user }}"
        group: "{{ nexus_install_user }}"
      tags: download

    - name: 解压
      ansible.builtin.unarchive:
        remote_src: true
        src: "/tmp/{{ nexus_tar_name }}"
        dest: "/home/{{ nexus_install_user }}"
        owner: "{{ nexus_install_user }}"
        group: "{{ nexus_install_user }}"
      become_user: "{{ nexus_install_user }}"

    - name: 复制启动文件
      ansible.builtin.template:
        src: "{{ item }}.j2"
        dest: "/etc/supervisord.d/conf.d/{{ item }}"
        mode: "0755"
        owner: root
        group: root
      with_items:
        - nexus-supervisord.ini

    - name: 更新启动文件
      ansible.builtin.command:
        chdir: /tmp
        cmd: /usr/bin/supervisorctl -c /etc/supervisord.d/supervisor.conf update
      changed_when: false

    - name: 重启0
      ansible.builtin.command:
        chdir: /tmp
        cmd: "/usr/bin/supervisorctl -u admin -p 123456 stop nexus"
      changed_when: false

    - name: 重启1
      ansible.builtin.command:
        chdir: /tmp
        cmd: "/usr/bin/supervisorctl -u admin -p 123456 start nexus"
      changed_when: false

    - name: 检查端口是否运行
      ansible.builtin.wait_for:
        port: 8081
        state: started
        delay: 5
        timeout: 120
    # 密码在这里 cat /home/ecs-user/sonatype-work/nexus3/admin.password

这只是一个简单的示例,实际的Playbook可能需要更多的任务和配置。根据自己的需求和环境进行相应的调整。

4. 执行Ansible Playbook:运行Ansible Playbook来执行Nexus的部署任务:

$ ansible-playbook -i inventory/deploy-nexus-host.ini playbook/nexus/deploy-nexus.yaml

PLAY [安装 Nexus] *****************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************
ok: [aliyun_ecs]

TASK [复制启动文件] ***************************************************************************************************************************
ok: [aliyun_ecs] => (item=nexus-supervisord.ini)

TASK [更新启动文件] ***************************************************************************************************************************
ok: [aliyun_ecs]

TASK [重启0] **********************************************************************************************************************************
ok: [aliyun_ecs]

TASK [重启1] **********************************************************************************************************************************
ok: [aliyun_ecs]

TASK [检查端口是否运行] ***********************************************************************************************************************
ok: [aliyun_ecs]

PLAY RECAP ************************************************************************************************************************************
aliyun_ecs                 : ok=6    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

通过以上步骤,您可以使用Ansible快速、可靠地部署Nexus,并开始利用其丰富的功能。

结论

使用Ansible来部署Nexus可以极大地简化部署过程,并提供一致性和可重复性。通过定义Ansible Playbook和主机清单,可以轻松地配置和管理Nexus实例。同时,Nexus的使用场景也非常广泛,包括依赖管理、构件发布、快速部署和安全权限控制等。根据具体的需求和项目要求,可以灵活地利用Nexus来加速软件开发和部署过程。

希望本文提供的最佳实践和使用场景示例对您有所帮助。使用Ansible来部署Nexus将为您的团队带来更高效、一致和安全的构建和部署体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱写代码的小任

感谢老板打赏,我将会再接再厉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值