Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/psykulsk/ansibleconnect
Connect to all hosts from the inventory with one command
https://github.com/psykulsk/ansibleconnect
ansible developer-tools devops devops-tools inventory ssh ssh-agent ssh-keys sshpass tmux tmux-shells
Last synced: 4 days ago
JSON representation
Connect to all hosts from the inventory with one command
- Host: GitHub
- URL: https://github.com/psykulsk/ansibleconnect
- Owner: psykulsk
- License: mit
- Created: 2019-11-01T00:37:24.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2020-10-06T20:22:46.000Z (about 4 years ago)
- Last Synced: 2024-04-26T10:42:31.320Z (7 months ago)
- Topics: ansible, developer-tools, devops, devops-tools, inventory, ssh, ssh-agent, ssh-keys, sshpass, tmux, tmux-shells
- Language: Python
- Homepage:
- Size: 1.22 MB
- Stars: 25
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.txt
- License: LICENSE
Awesome Lists containing this project
README
# Ansibleconnect - connect to all hosts from the inventory with one command
Ansible Version | CI Status
---------|:---------
2.7 | [![Ansible 2.7 Build Status](https://travis-ci.com/psykulsk/ansibleconnect.svg?branch=master&&env=USED_ANSIBLE_VERSION=2.7)](https://travis-ci.com/psykulsk/ansibleconnect)
2.8 | [![Ansible 2.8 Build Status](https://travis-ci.com/psykulsk/ansibleconnect.svg?branch=master&&env=USED_ANSIBLE_VERSION=2.8)](https://travis-ci.com/psykulsk/ansibleconnect)
2.9 | [![Ansible 2.9 Build Status](https://travis-ci.com/psykulsk/ansibleconnect.svg?branch=master&&env=USED_ANSIBLE_VERSION=2.9)](https://travis-ci.com/psykulsk/ansibleconnect)
2.10 | [![Ansible 2.10 Build Status](https://travis-ci.com/psykulsk/ansibleconnect.svg?branch=master&&env=USED_ANSIBLE_VERSION=2.10)](https://travis-ci.com/psykulsk/ansibleconnect)## SSH into all hosts in your inventory with one command.
Ansibleconnect creates a bash script based on your ansible inventory.
That script will create a new tmux window or session and create a separate pane
for each one of your 'sshable' inventory hosts. Inside of each of the
panes an ssh connection to the pane's host will be established.![](doc/demo.gif)
### Setup example (on Ubuntu):
```
sudo apt install tmux
sudo apt install sshpass
pip install ansibleconnect
```### Usage examples:
Connect to all hosts in inventory:
```
source <(ansibleconnect -i inventory.yml)
```Connect to all hosts from group1 and group2:
```
source <(ansibleconnect -i inventory.yml -g 'group1:group2')
```Connect to all hosts from group1 except for hosts that are also in group2:
```
source <(ansibleconnect -i inventory.yml -g 'group1:!group2')
```Connect to all hosts from inventory except for hosts in group1:
```
source <(ansibleconnect -i inventory.yml -g '!group1')
```Connect to all hosts that have AWS provider:
```
source <(ansibleconnect -i inventory.yml -vars provider:aws)>
```**NOTE:** In case you don't use bash. You can also use *eval* command, for example:
```
eval "$(ansibleconnect -i inventories/inventory.yml)"
```#### Possible flags
* `-i`, `--inventory` - Path to ansible inventory
* `-g`, `--groups` - Inventory groups of hosts to connect to (multiple groups should be concentrated with *:*. *!* in front of group name means that ansibleconnect should not connect to hosts form this group). Example: `-g computes:!storage`
* `--hosts` - List of hostnames to connect to. Example: `--hosts hostA,hostB`
* `-vars`, `--variables` - Variables that host should have defined in inventory to connect to it. Accepted format: *key:value* in case where host should have variable with specific value or *key* in case where host should have defined variable no matter what value. Example: `-v type:dev,team:ui`
* `-novars`, `--no-variables` - Variables that host should not have defined in inventory to connect to it. Accepted format: *key:value* in case where host should not have variable with specific value or *key* in case where host should not have defined variable no matter what value.Example: `-novars type:prod,team:sales`#### Configuration
Ansibleconnect looks for the `ansible.cfg` file in the same locations as ansible.
### Authentication
#### ssh-agent
For authentication one can use ssh keys. `ansibleconnect` will scan the inventory file for connection options (`ansible_ssh_common_args`, `ansible_ssh_user`, `ansible_host`, `ansible_private_key_file`, etc.). Ssh keys can be passed via them. Otherwise, one can use the `ssh-agent` tool. Environment args (`SSH_AGENT_PID` and `SSH_AUTH_SOCK`) will be passed to each one of the tmux shells.
##### ssh-agent setup example
```
eval $(ssh-agent)
ssh-add ~/.ssh/my_private_key.pem
```#### sshpass
If `ansible_ssh_pass` variable is used in the inventory, one should install the `sshpass` and make it discoverable via `PATH`. Please note that when using the sshpass, password will passed in plaintext and it will be saved in each of the tmux shells' history.