68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# Use Ansible
|
|
|
|
## Run with docker ssh agent side proxy
|
|
|
|
### build docker images
|
|
|
|
```sh
|
|
git clone -q --depth 1 --branch master https://github.com/arcodange/ssh-agent.git /tmp/ssh-agent
|
|
(cd /tmp/ssh-agent ; docker build -t docker-ssh-agent:latest -f Dockerfile . ; rm -rf /tmp/ssh-agent)
|
|
(cd ansible; docker build -t arcodange-ansible:0.0.0 .)
|
|
```
|
|
|
|
### run in container
|
|
|
|
```sh
|
|
# git clone -q --depth 1 --branch master https://github.com/arcodange/ssh-agent.git /tmp/ssh-agent
|
|
# (cd /tmp/ssh-agent ; docker build -t docker-ssh-agent:latest -f Dockerfile . ; rm -rf /tmp/ssh-agent)
|
|
# (cd ansible; docker build -t arcodange-ansible:0.0.0 .)
|
|
docker run -d --name=ssh-agent docker-ssh-agent:latest
|
|
docker run --rm --volumes-from=ssh-agent -v ~/.ssh:/.ssh -it docker-ssh-agent:latest ssh-add /root/.ssh/id_rsa
|
|
docker run --rm -u root --name test --volumes-from=ssh-agent -v $PWD:/home/arcodange/code arcodange-ansible:0.0.0 \
|
|
# -e ANSIBLE_VAULT_PASSWORD_FILE=$ANSIBLE_VAULT_PASSWORD_FILE -v $ANSIBLE_VAULT_PASSWORD_FILE:$ANSIBLE_VAULT_PASSWORD_FILE \ before the arcodange-ansible image name
|
|
ansible-playbook ansible/arcodange/factory/playbooks/setup/03cicd.yml -i ansible/arcodange/factory/inventory -vv
|
|
```
|
|
|
|
### use vault with single password
|
|
|
|
> [!IMPORTANT]
|
|
> Required for gitea mailer
|
|
> ```sh
|
|
> kubectl create secret generic arcodange-ansible-vault --from-literal="pass=<ansible_vault_password>" -n kube-system`
|
|
> ```
|
|
> to be set as a file variable for gitea runners
|
|
|
|
```sh
|
|
ANSIBLE_VAULT_PASSWORD_FILE=~/.local/bin/read-vault-key.sh;
|
|
mkdir -p `dirname $ANSIBLE_VAULT_PASSWORD_FILE`; set +o histexpand;
|
|
echo -e "#!/bin/bash\nkubectl get secret -n kube-system arcodange-ansible-vault --template='{{index .data.pass | base64decode}}'" > $ANSIBLE_VAULT_PASSWORD_FILE;
|
|
set -o histexpand; chmod +x $ANSIBLE_VAULT_PASSWORD_FILE; echo 'export ANSIBLE_VAULT_PASSWORD_FILE=$ANSIBLE_VAULT_PASSWORD_FILE' >> `find ~ -maxdepth 1 -type f -name '\.*profile' -or -name '\.bashrc' | head -n1`
|
|
```
|
|
|
|
### a tool to reuse a ssh agent (not required)
|
|
|
|
```sh
|
|
FIND_SSH_AGENT=$HOME/.local/bin/ssh-find-agent
|
|
curl -s https://raw.githubusercontent.com/wwalker/ssh-find-agent/master/ssh-find-agent.sh > $FIND_SSH_AGENT
|
|
chmod +x $FIND_SSH_AGENT
|
|
echo 'ssh_find_agent "$@"' >> $FIND_SSH_AGENT
|
|
which brew && brew install coreutils # if on macos
|
|
```
|
|
|
|
```sh
|
|
eval "$(ssh-agent -s)"
|
|
ssh-add ~/.ssh/id_rsa
|
|
```
|
|
|
|
## dev
|
|
|
|
### test an expression
|
|
|
|
```sh
|
|
ansible -i ,localhost -c local localhost -m raw -a "echo hello world {{ inventory_hostname }} : {{ hostvars | to_nice_json | regex_replace(\"['\n]\",' ') }}"
|
|
```
|
|
|
|
### local python environment with pipx
|
|
|
|
#### add dependency
|
|
- `pipx runpip ansible-core install dnspython` |