blob: 293bdb6892718a6aaf0f17241f4dc0d1e7a7713e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
Dynamic Inventory Generation
============================
Script within the openshift-ansible image that can dynamically
generate an Ansible inventory file from an existing cluster.
## Configure
User configuration helps to provide additional details when creating an inventory file.
The default location of this file is in `/etc/inventory-generator-config.yaml`. The
following configuration values are either expected or default to the given values when omitted:
- `master_config_path`:
- specifies where to look for the bind-mounted `master-config.yaml` file in the container
- if omitted or a `null` value is given, its value is defaulted to `/opt/app-root/src/master-config.yaml`
- `admin_kubeconfig_path`:
- specifies where to look for the bind-mounted `admin.kubeconfig` file in the container
- if omitted or a `null` value is given, its value is defaulted to `/opt/app-root/src/.kube/config`
- `ansible_ssh_user`:
- specifies the ssh user to be used by Ansible when running the specified `PLAYBOOK_FILE` (see `README_CONTAINER_IMAGE.md` for additional information on this environment variable).
- if omitted, its value is defaulted to `root`
- `ansible_become_user`:
- specifies a user to "become" on the remote host. Used for privilege escalation.
- If a non-null value is specified, `ansible_become` is implicitly set to `yes` in the resulting inventory file.
See the supplied sample user configuration file in [`root/etc/inventory-generator-config.yaml`](./root/etc/inventory-generator-config.yaml) for additional optional inventory variables that may be specified.
## Build
See `README_CONTAINER_IMAGE.md` for information on building this image.
## Run
Given a master node's `master-config.yaml` file, a user configuration file (see "Configure" section), and an `admin.kubeconfig` file, the command below will:
1. Use `oc` to query the host about additional node information (using the supplied `kubeconfig` file)
2. Generate an inventory file based on information retrieved from `oc get nodes` and the given `master-config.yaml` file.
3. run the specified [openshift-ansible](https://github.com/openshift/openshift-ansible) `health.yml` playbook using the generated inventory file from the previous step
```
docker run -u `id -u` \
-v $HOME/.ssh/id_rsa:/opt/app-root/src/.ssh/id_rsa:Z,ro \
-v /tmp/origin/master/admin.kubeconfig:/opt/app-root/src/.kube/config:Z \
-v /tmp/origin/master/master-config.yaml:/opt/app-root/src/master-config.yaml:Z \
-e OPTS="-v --become-user root" \
-e PLAYBOOK_FILE=playbooks/openshift-checks/health.yml \
-e GENERATE_INVENTORY=true \
-e USER=`whoami` \
openshift/origin-ansible
```
**Note** In the command above, specifying the `GENERATE_INVENTORY` environment variable will automatically generate the inventory file in an expected location.
An `INVENTORY_FILE` variable (or any other inventory location) does not need to be supplied when generating an inventory.
## Debug
To debug the `generate` script, run the above script interactively
and manually execute `/usr/local/bin/generate`:
```
...
docker run -u `id -u` \
-v ...
...
-it openshift/origin-ansible /bin/bash
---
bash-4.2$ cd $HOME
bash-4.2$ ls
master-config.yaml
bash-4.2$ /usr/local/bin/generate $HOME/generated_hosts
bash-4.2$ ls
generated_hosts master-config.yaml
bash-4.2$ less generated_hosts
...
```
## Notes
See `README_CONTAINER_IMAGE.md` for additional information about this image.
|