Как мне написать одну роль и подключиться к разным хостам по мере выполнения сценария?
Это пример того, что я хотел бы сделать, но получаю сообщение об ошибке, как показано ниже.
ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path.
The error appears to be in '/etc/ansible/roles/customer_setups/microlight/customer_app_template/tasks/main.yml': line 3, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
# tasks file for /etc/ansible/roles/customer_app_template
- hosts: synbill-apps
^ here
---
# tasks file for /etc/ansible/roles/customer_app_template
- hosts: synbill-apps
tasks:
- name: Clone syndicatebilling repository into a new customer app
git:
repo: git@bitbucket.org:xxxx/xxx.git
version: syndicateBookings
dest: /var/www/html/microlight
force: yes
- name: run npm install
npm:
path: /var/www/html/microlight
- name: copy .env file
copy:
src: files/.env
dest: /var/www/html/microlight/.env
- name: create new app key
command: chdir=/var/www/html/microlight adonis key:generate
- name: migrate database
command: chdir=/var/www/html/microlight adonis migration:run --force
- name: start the app
command: chdir=/var/www/html/microlight pm2 start server.js --name placeholder_domain
- name: save the pm2 config
command: chdir=/var/www/html/microlight pm2 save
- hosts: synbill-db
- name: "Install Mysql Client package"
apt:
name: "{{ item }}"
state: present
with_items:
- mysql-client
- python3-dev
- libmysqlclient-dev
- python3-mysqldb
- name: Create syndicate database
mysql_db:
name: microlight
state: present
login_user: simon
login_password: xxxxxxxxxxx
- hosts: synbill-apps
.....now the db is setup do some more work on the apps server
- hosts: synbill-webserver
.... now setup the virtual host
- hosts: synbill-db
.... now update the database to so user knows everything is setup.
Задачи в tasks.yml
файл не выглядит подходящим для абстракции ролей. Я бы просто написал пьесу.
Чтобы иметь возможность запускать playbook, вам нужно будет добавить здесь раздел `tasks:
- hosts: synbill-db
tasks:
- name: "Install Mysql Client package"
Чтобы абстрагировать код с ролями, проще всего было бы написать две роли: одну для приложения и одну для db.