Skip to content
This repository has been archived by the owner on Jun 13, 2024. It is now read-only.

Fixes #145: Use FQCN in module docs and in plugin examples. #146

Merged
merged 1 commit into from
Jul 1, 2020
Merged
Show file tree
Hide file tree
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
30 changes: 23 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,27 +56,24 @@ Content in this collection requires the [OpenShift Python client](https://pypi.o

### Using modules from the Kubernetes Collection in your playbooks

You can either call modules by their Fully Qualified Collection Namespace (FQCN), like `community.kubernetes.k8s_info`, or you can call modules by their short name if you list the `community.kubernetes` collection in the playbook's `collections`, like so:
It's preferable to use content in this collection using their Fully Qualified Collection Namespace (FQCN), for example `community.kubernetes.k8s_info`:

```yaml
---
- hosts: localhost
gather_facts: false
connection: local

collections:
- community.kubernetes

tasks:
- name: Ensure the myapp Namespace exists.
k8s:
community.kubernetes.k8s:
api_version: v1
kind: Namespace
name: myapp
state: present

- name: Ensure the myapp Service exists in the myapp Namespace.
k8s:
community.kubernetes.k8s:
state: present
definition:
apiVersion: v1
Expand All @@ -93,15 +90,34 @@ You can either call modules by their Fully Qualified Collection Namespace (FQCN)
app: myapp

- name: Get a list of all Services in the myapp namespace.
k8s_info:
community.kubernetes.k8s_info:
kind: Service
namespace: myapp
register: myapp_services

- name: Display number of Services in the myapp namespace.
debug:
var: myapp_services.resources | count
```

If upgrading older playbooks which were built prior to Ansible 2.10 and this collection's existence, you can also define `collections` in your play and refer to this collection's modules as you did in Ansible 2.9 and below, as in this example:

```yaml
---
- hosts: localhost
gather_facts: false
connection: local

collections:
- community.kubernetes

tasks:
- name: Ensure the myapp Namespace exists.
k8s:
api_version: v1
kind: Namespace
name: myapp
state: present
```

For documentation on how to use individual modules and other content included in this collection, please see the links in the 'Included content' section earlier in this README.
Expand Down
6 changes: 3 additions & 3 deletions plugins/inventory/k8s.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,20 +94,20 @@
# File must be named k8s.yaml or k8s.yml

# Authenticate with token, and return all pods and services for all namespaces
plugin: k8s
plugin: community.kubernetes.k8s
connections:
- host: https://192.168.64.4:8443
api_key: xxxxxxxxxxxxxxxx
validate_certs: false

# Use default config (~/.kube/config) file and active context, and return objects for a specific namespace
plugin: k8s
plugin: community.kubernetes.k8s
connections:
- namespaces:
- testing

# Use a custom config file, and a specific context.
plugin: k8s
plugin: community.kubernetes.k8s
connections:
- kubeconfig: /path/to/config
context: 'awx/192-168-64-4:8443/developer'
Expand Down
6 changes: 3 additions & 3 deletions plugins/inventory/openshift.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,20 +94,20 @@
# File must be named openshift.yaml or openshift.yml

# Authenticate with token, and return all pods and services for all namespaces
plugin: openshift
plugin: community.kubernetes.openshift
connections:
- host: https://192.168.64.4:8443
api_key: xxxxxxxxxxxxxxxx
verify_ssl: false

# Use default config (~/.kube/config) file and active context, and return objects for a specific namespace
plugin: openshift
plugin: community.kubernetes.openshift
connections:
- namespaces:
- testing

# Use a custom config file, and a specific context.
plugin: openshift
plugin: community.kubernetes.openshift
connections:
- kubeconfig: /path/to/config
context: 'awx/192-168-64-4:8443/developer'
Expand Down
14 changes: 7 additions & 7 deletions plugins/lookup/k8s.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,23 +133,23 @@
EXAMPLES = """
- name: Fetch a list of namespaces
set_fact:
projects: "{{ lookup('k8s', api_version='v1', kind='Namespace') }}"
projects: "{{ lookup('community.kubernetes.k8s', api_version='v1', kind='Namespace') }}"

- name: Fetch all deployments
set_fact:
deployments: "{{ lookup('k8s', kind='Deployment') }}"
deployments: "{{ lookup('community.kubernetes.k8s', kind='Deployment') }}"

- name: Fetch all deployments in a namespace
set_fact:
deployments: "{{ lookup('k8s', kind='Deployment', namespace='testing') }}"
deployments: "{{ lookup('community.kubernetes.k8s', kind='Deployment', namespace='testing') }}"

- name: Fetch a specific deployment by name
set_fact:
deployments: "{{ lookup('k8s', kind='Deployment', namespace='testing', resource_name='elastic') }}"
deployments: "{{ lookup('community.kubernetes.k8s', kind='Deployment', namespace='testing', resource_name='elastic') }}"

- name: Fetch with label selector
set_fact:
service: "{{ lookup('k8s', kind='Service', label_selector='app=galaxy') }}"
service: "{{ lookup('community.kubernetes.k8s', kind='Service', label_selector='app=galaxy') }}"

# Use parameters from a YAML config

Expand All @@ -159,11 +159,11 @@

- name: Using the config (loaded from a file in prior task), fetch the latest version of the object
set_fact:
service: "{{ lookup('k8s', resource_definition=config) }}"
service: "{{ lookup('community.kubernetes.k8s', resource_definition=config) }}"

- name: Use a config from the local filesystem
set_fact:
service: "{{ lookup('k8s', src='service.yml') }}"
service: "{{ lookup('community.kubernetes.k8s', src='service.yml') }}"
"""

RETURN = """
Expand Down
2 changes: 1 addition & 1 deletion plugins/modules/k8s.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
- Pass the object definition from a source file or inline. See examples for reading
files and using Jinja templates or vault-encrypted files.
- Access to the full range of K8s APIs.
- Use the M(k8s_info) module to obtain a list of items about an object of type C(kind)
- Use the M(community.kubernetes.k8s_info) module to obtain a list of items about an object of type C(kind)
- Authenticate using either a config file, certificates, password or token.
- Supports check mode.

Expand Down
10 changes: 5 additions & 5 deletions plugins/modules/k8s_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,34 +70,34 @@

EXAMPLES = r'''
- name: Get an existing Service object
k8s_info:
community.kubernetes.k8s_info:
api_version: v1
kind: Service
name: web
namespace: testing
register: web_service

- name: Get a list of all service objects
k8s_info:
community.kubernetes.k8s_info:
api_version: v1
kind: Service
namespace: testing
register: service_list

- name: Get a list of all pods from any namespace
k8s_info:
community.kubernetes.k8s_info:
kind: Pod
register: pod_list

- name: Search for all Pods labelled app=web
k8s_info:
community.kubernetes.k8s_info:
kind: Pod
label_selectors:
- app = web
- tier in (dev, test)

- name: Search for all running pods
k8s_info:
community.kubernetes.k8s_info:
kind: Pod
field_selectors:
- status.phase=Running
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/targets/kubernetes/library/test_tempfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
description:
- The C(test_tempfile) module creates temporary files and directories. C(mktemp) command takes different parameters on various systems, this module helps
to avoid troubles related to that. Files/directories created by module are accessible only by creator. In case you need to make them world-accessible
you need to use M(file) module.
- For Windows targets, use the M(win_tempfile) module instead.
you need to use M(ansible.builtin.file) module.
- For Windows targets, use the M(ansible.builtin.win_tempfile) module instead.

options:
state:
Expand Down