From a68880a77490009ca145f50ab21dcbbd9c84f51b Mon Sep 17 00:00:00 2001 From: ionutboangiu Date: Thu, 21 Nov 2024 17:48:49 +0200 Subject: [PATCH] Revise cgrates setup ansible role - allows skipping symlink creation - symlink binary destinations can be configured - renamed git_version -> cgrates_branch. This also makes sure cgrates_branch variable is being set directly from the role and there's no need to configure it in the playbook. - fixed some linter warnings and slightly improved formatting --- .github/workflows/integration_tests.yaml | 2 +- data/ansible/monitoring/main.yaml | 1 - data/ansible/roles/cgrates/defaults/main.yaml | 15 ++-- data/ansible/roles/cgrates/tasks/main.yaml | 88 ++++++++++--------- 4 files changed, 55 insertions(+), 51 deletions(-) diff --git a/.github/workflows/integration_tests.yaml b/.github/workflows/integration_tests.yaml index 559280b3b..cc3229165 100644 --- a/.github/workflows/integration_tests.yaml +++ b/.github/workflows/integration_tests.yaml @@ -55,7 +55,7 @@ jobs: - name: Run Ansible Playbook run: | - ansible-playbook data/ansible/integration_tests/main.yaml -i localhost, -c local -e "ansible_user=$(whoami) cgrates_dir=$GITHUB_WORKSPACE clone_repository=false install_go=false" + ansible-playbook data/ansible/integration_tests/main.yaml -i localhost, -c local -e "ansible_user=$(whoami) cgrates_dir=$GITHUB_WORKSPACE cgrates_clone_repo=false install_go=false" # - name: Set up tmate session for debugging # uses: mxschmitt/action-tmate@v3 diff --git a/data/ansible/monitoring/main.yaml b/data/ansible/monitoring/main.yaml index 62af5a2c3..996ba9ab5 100644 --- a/data/ansible/monitoring/main.yaml +++ b/data/ansible/monitoring/main.yaml @@ -75,7 +75,6 @@ # - role: ../../roles/cgrates # vars: # # To avoid tasks/dependencies we don't need. - # cgrates_migrator_cfg_path: # cgrates_dbs: # cgrates_dependencies: # - git diff --git a/data/ansible/roles/cgrates/defaults/main.yaml b/data/ansible/roles/cgrates/defaults/main.yaml index d7680b3e7..13ec5df15 100644 --- a/data/ansible/roles/cgrates/defaults/main.yaml +++ b/data/ansible/roles/cgrates/defaults/main.yaml @@ -1,16 +1,19 @@ --- -golang_gopath: '/home/{{ ansible_user }}/go' -clone_repository: true -cgrates_dir: '{{ golang_gopath }}/src/github.com/cgrates/cgrates' +golang_gopath: "/home/{{ ansible_user }}/go" golang_install_dir: /usr/local/go -git_version: master -cgrates_migrator_cfg_path: /usr/share/cgrates/conf/samples/tutmysql # leave empty to do nothing +cgrates_clone_repo: true +cgrates_dir: "{{ golang_gopath }}/src/github.com/cgrates/cgrates" +cgrates_branch: master + +# Leave empty to skip creating symlinks +cgrates_data_path: "/usr/share/cgrates" +cgrates_bin_path: "/usr/bin" + cgrates_dbs: - mysql - postgres - mongo -# CGRateS dependencies cgrates_dependencies: - git - redis-server diff --git a/data/ansible/roles/cgrates/tasks/main.yaml b/data/ansible/roles/cgrates/tasks/main.yaml index 40ee627dc..e1851bfcf 100644 --- a/data/ansible/roles/cgrates/tasks/main.yaml +++ b/data/ansible/roles/cgrates/tasks/main.yaml @@ -2,68 +2,70 @@ - name: Install CGRateS dependencies become: true ansible.builtin.package: - name: '{{ cgrates_dependencies }}' + name: "{{ cgrates_dependencies }}" state: present - update_cache: yes + update_cache: true - name: Create cgrates directory ansible.builtin.file: state: directory mode: u=rwx,go=rx - owner: '{{ ansible_user }}' - dest: '{{ cgrates_dir }}' - when: clone_repository | bool + owner: "{{ ansible_user }}" + dest: "{{ cgrates_dir }}" + when: cgrates_clone_repo | bool - name: Git clone cgrates ansible.builtin.git: repo: https://github.com/cgrates/cgrates.git - dest: '{{ cgrates_dir }}' - update: yes - force: yes - version: '{{ git_version }}' - when: clone_repository | bool + dest: "{{ cgrates_dir }}" + update: true + force: true + version: "{{ cgrates_branch }}" + when: cgrates_clone_repo | bool -- name: Build cgrates - ansible.builtin.shell: - cmd: bash -lc "sh {{ cgrates_dir }}/build.sh" - args: - chdir: '{{ cgrates_dir }}' - become_user: '{{ ansible_user }}' +- name: Install cgrates binaries + ansible.builtin.command: + cmd: bash -c './build.sh' + chdir: "{{ cgrates_dir }}" + environment: + PATH: "{{ ansible_env.PATH }}:/usr/local/go/bin" -- name: Create symbolic links +- name: Create cgrates data folder symlink ansible.builtin.file: - src: '{{ item.src }}' - dest: '{{ item.dest }}' + src: "{{ cgrates_dir }}/data" + dest: "{{ cgrates_data_path }}" state: link become: true + when: cgrates_data_path | length > 0 + +- name: Create cgrates binary symlinks + ansible.builtin.file: + src: "{{ golang_gopath }}/bin/{{ item }}" + dest: "{{ cgrates_bin_path }}/{{ item }}" + state: link + become: true + when: cgrates_bin_path | length > 0 loop: - - { src: '{{ cgrates_dir }}/data', dest: /usr/share/cgrates } - - { src: '{{ golang_gopath }}/bin/cgr-engine', dest: /usr/bin/cgr-engine } - - { src: '{{ golang_gopath }}/bin/cgr-loader', dest: /usr/bin/cgr-loader } - - { - src: '{{ golang_gopath }}/bin/cgr-migrator', - dest: /usr/bin/cgr-migrator, - } - - { - src: '{{ golang_gopath }}/bin/cgr-console', - dest: /usr/bin/cgr-console, - } - - { src: '{{ golang_gopath }}/bin/cgr-tester', dest: /usr/bin/cgr-tester } + - cgr-engine + - cgr-loader + - cgr-migrator + - cgr-console + - cgr-tester - name: Run post install scripts become: true ansible.builtin.command: - cmd: '{{ item.cmd }}' - chdir: '{{ cgrates_dir }}/data/storage/{{ item.db }}' + cmd: "{{ item.cmd }}" + chdir: "{{ cgrates_dir }}/data/storage/{{ item.db }}" when: item.db in cgrates_dbs loop: - - { db: mysql, cmd: sh setup_ers_db.sh root CGRateS.org localhost } - - { db: mysql, cmd: sh setup_cgr_db.sh root CGRateS.org localhost } - - { db: postgres, cmd: sh create_db_with_users.sh } - - { db: postgres, cmd: sh create_ers_db.sh } - - { db: mongo, cmd: sh setup_cgr_db.sh } - -- name: Set versions - ansible.builtin.command: - cmd: 'cgr-migrator -exec=*set_versions -config_path={{ cgrates_migrator_cfg_path }}' - when: cgrates_migrator_cfg_path != "" + - db: mysql + cmd: sh setup_ers_db.sh root CGRateS.org localhost + - db: mysql + cmd: sh setup_cgr_db.sh root CGRateS.org localhost + - db: postgres + cmd: sh create_db_with_users.sh + - db: postgres + cmd: sh create_ers_db.sh + - db: mongo + cmd: sh setup_cgr_db.sh