Skip to content
This repository was archived by the owner on Mar 23, 2019. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions proposals/deployment-artifiacts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Refactor Deployment Artifacts

## Summary

Produce a portable, better organized deployment artifact that uses an Ansible role, and the new Ansible 2.5 K8s modules.

## Details

Deployment currently generates the following artifacts:

- Single, monolithic playbook containing all tasks, and all K8s object configurations inline
- Copy of the `ansible.kubernetes-modules` role

This proposal is to replace the current artifacts with the following:

- Playbook that executes a role
- Role containing K8s object configuration files separate from playbook tasks

The generated role will include the following:

- Task files that group tasks by function (e.g., start, stop, destroy, etc.)
- A separate configuration file for each K8s object
- README.md file for the role, providing how-to information, and contents descriptions

Additional details include:

- The playbook name and role name will match the project name
- Tasks will be tagged, so that the playbook can be used to perform an action based on tag, as it does today
- New modules available in Ansible 2.5 will be used, rather than the `ansible.kubernetes-modules` role.

Artifacts will be written to the following directory structure:

```
ansible-deployment/
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where will the role(s) be placed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TomasTomecek

Was thinking we would continue writing artifacts into the ansible-deployment subdirectory that deploy adds to the project.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just curious where would the generated role(s) be placed. You wrote that

Produce a portable, better organized deployment artifact that uses an Ansible role...

When I look at the proposed directory hierarchy, I'm not sure which directory will have the resulting, generated role(s).

Also, what will be the default action of the root playbook project-name.yml?

Copy link
Contributor Author

@chouseknecht chouseknecht Jan 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking the playbook is really simple. Maybe something like the following:

- name: my-project
  hosts: all
  gather_facts: no
  roles:
    - role: my-project-role
      tags:
      - always

project-name.yml
project-name/
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@TomasTomecek

This was my thinking for the role. It would just be written out in it's own directory, rather than placing it under a /roles subdirectory. I should call this directory project-name-role to be more clear.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh right, makes perfect sense now; feel free to leave it as it is

README.md
config/
deployments/
routes/
services/
pvcs/
secrets/
...
tasks/
main.yml
start.yml
stop.yml
destroy.yml
```