{"id":15209415,"url":"https://github.com/ryanreece/ansible-linux-day0","last_synced_at":"2025-10-29T15:30:38.978Z","repository":{"id":255130748,"uuid":"848427491","full_name":"ryanreece/ansible-linux-day0","owner":"ryanreece","description":"Day 0 linux system config. Configures shell environment and installs useful cli tools and packages.","archived":false,"fork":false,"pushed_at":"2025-01-24T05:16:18.000Z","size":95,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-02T02:01:46.905Z","etag":null,"topics":["ansible-playbook","linux","zsh"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryanreece.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-27T18:34:16.000Z","updated_at":"2024-10-06T04:04:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"082ba7c9-9bb0-4c93-9966-c4f0cdddeda3","html_url":"https://github.com/ryanreece/ansible-linux-day0","commit_stats":null,"previous_names":["ryanreece/ansible-linux-day0"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanreece%2Fansible-linux-day0","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanreece%2Fansible-linux-day0/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanreece%2Fansible-linux-day0/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanreece%2Fansible-linux-day0/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryanreece","download_url":"https://codeload.github.com/ryanreece/ansible-linux-day0/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238840723,"owners_count":19539602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible-playbook","linux","zsh"],"created_at":"2024-09-28T07:23:32.768Z","updated_at":"2025-10-29T15:30:38.973Z","avatar_url":"https://github.com/ryanreece.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eAnsible Linux Day 0\u003c/h1\u003e\n\u003c/div\u003e\n\n**ansible-linux-day0** is a server and workstation configuration repo designed \nto automatically install useful tools and applications. This is an\n_opinionated_ set of choices based on my personal experience managing Linux \nsystems.\n\n## Getting Started\n\nThe playbook is designed to work on a baseline Ubuntu system. To get started, \nclone the repo to your system and run the `./bootstrap.sh` file. This script \nwill install the latest version of ansible and the necessary ansible roles\ndefined in `roles/requirements.yml`.\n\n1. Run `bootstrap.sh`:\n\n```bash\n./bootstrap.sh\n```\n\n2. Run `install-workstation.sh` to configure the current workstation:\n\n```bash\n./install-workstation.sh\n```\n\n### Configuring Servers\n\nThe playbook assumes you have a list of target servers defined in the \n`inventory/` directory.\n\n1. Run `ansible-playbook`:\n\n```bash\nansible-playbook -i inventory/server.yml day0-server.yml -K\n```\n\n## Ansible Roles\n\nThe following roles install a variety of packages and applications and apply \nconfiguration. The entry point for each role is the `main.yml` file which\nincludes a series of tasks via `ansible.builtin.include_tasks`. Each included\ntask has a corresponding variable which controls whether or not the tasks are\nrun.\n\nEach role has a `defaults/main.yml` file which contains the `install_*`\nvariables. To skip run an included task, simply set the `install_*` variable\nfor the tasks you want to exclude to `false`.\n\nExample:\n\n```yaml\n# vars.yml\n# Don't install Regolith/i3\ninstall_regolith: false\n```\n\n---\n\n### Common\n\n* Role file: [`roles/common/tasks/main.yml`](roles/common/tasks/main.yml)\n\nThe common role is used to install packages and configuration on both \nworkstations and servers. \n\n#### Packages\n\n* Task file: [`install_packages.yml`](roles/common/tasks/install_packages.yml)\n* Install var: `install_packages: true`\n\n1. [btop](#btop)\n2. [curl](#curl)\n3. [fzf](#fzf)\n4. [git](#git)\n5. [net-tools](#net-tools)\n6. [ripgrep](#ripgrep)\n7. [unzip](#unzip)\n8. [vim](#vim)\n9. [wget](#wget)\n10. [whois](#whois)\n11. [zip](#zip)\n12. [zoxide](#zoxide)\n\n#### Tmux\n\n* Task file: [`install_tmux.yml`](roles/common/tasks/install_packages.yml)\n* Install var: `install_tmux: true`\n\ntmux is a terminal multiplexer that allows users to manage multiple terminal sessions within a single window or session. With tmux, you can split a terminal into multiple panes, switch between them, and keep processes running in the background even if you disconnect from the session. It's especially useful for remote work, as you can disconnect from a session and reconnect later without losing any of the running processes.\n\n#### Zsh\n\n* Task file: [`install_zsh.yml`](roles/common/tasks/install_zsh.yml)\n* Install var: `install_zsh: true`\n\nZsh (Z shell) is an extended version of the Unix shell, with many improvements over the traditional Bash shell. It is widely used for interactive shell sessions due to its advanced features, ease of customization, and powerful scripting capabilities.\n\n#### SSH Key\n\n* Task file: [`install_ssh_key.yml`](roles/common/tasks/install_ssh_key.yml)\n* Install var: `install_ssh_key: true`\n\nAn ssh key is generated for the `ansible_user_id` with the type defined in the\n`openssh_keypair_type` variable. The default type is set to **ed25519**.\n\n#### NodeJS\n\n* Task file: [`install_nodejs.yml`](roles/common/tasks/install_nodejs.yml)\n* Install var: `install_nodejs: true`\n\nNodeJS is installed via the Node Version Manager (nvm). The NodeJS version to \ninstall is defined in the `nodejs_version` variable.\n\n#### AWS CLI\n\n* Task file: [`install_aws_cli.yml`](roles/common/tasks/install_aws_cli.yml)\n* Install var: `install_aws_cli: true`\n\nThe latest version of the AWS CLI v2 is downloaded from `awscli.amazonaws.com`\nand is installed via the `./aws/install` command.\n\n---\n\n### Server Core\n\n* Role file: [`roles/server_core/tasks/main.yml`](roles/server_core/tasks/main.yml)\n\n1. Unattended upgrades\n2. Tmux `.tmux.conf`\n3. Zsh `.zshrc`\n\n---\n\n### Workstation Core\n\n* Role file: [`roles/workstation_core/tasks/main.yml`](roles/workstation_core/tasks/main.yml)\n\n#### Dotfiles\n\n* Task file: [`install_dotfiles.yml`](roles/workstation_core/tasks/install_dotfiles.yml)\n* Install var: `install_dotfiles: true`\n\n#### Libraries\n\n* Task file: [`install_libraries.yml`](roles/workstation_core/tasks/install_libraries.yml)\n* Install var: `install_libraries: true`\n\n#### Luarocks\n\n* Task file: [`install_luarocks.yml`](roles/workstation_core/tasks/install_luarocks.yml)\n* Install var: `install_luarocks: true`\n\n#### Neovim\n\n* Task file: [`install_neovim.yml`](roles/workstation_core/tasks/install_neovim.yml)\n* Install var: `install_neovim: true`\n\n#### Python\n\n* Task file: [`install_python.yml`](roles/workstation_core/tasks/install_python.yml)\n* Install var: `install_python: true`\n\n#### TypeScript\n\n* Task file: [`install_typescript.yml`](roles/workstation_core/tasks/install_typescript.yml)\n* Install var: `install_typescript: true`\n\n#### FastFetch\n\n* Task file: [`install_fastfetch.yml`](roles/workstation_core/tasks/install_fastfetch.yml)\n* Install var: `install_fastfetch: true`\n\n#### Docker\n\n* Task file: [`install_docker.yml`](roles/workstation_core/tasks/install_docker.yml)\n* Install var: `install_docker: true`\n\n#### ProxyChains-NG\n\n* Task file: [`install_proxychains_ng.yml`](roles/workstation_core/tasks/install_proxychains_ng.yml)\n* Install var: `install_proxychains_ng: true`\n\n#### LazyDocker\n\n* Task file: [`install_lazydocker.yml`](roles/workstation_core/tasks/install_lazydocker.yml)\n* Install var: `install_lazydocker: true`\n\n#### LazyGit\n\n* Task file: [`install_lazygit.yml`](roles/workstation_core/tasks/install_lazygit.yml)\n* Install var: `install_lazygit: true`\n\n#### Minicom\n\n* Task file: [`install_minicom.yml`](roles/workstation_core/tasks/install_minicom.yml)\n* Install var: `install_minicom: true`\n\n#### Terraform\n\n* Task file: [`install_terraform.yml`](roles/workstation_core/tasks/install_terraform.yml)\n* Install var: `install_terraform: true`\n\n#### PowerShell\n\n* Task file: [`install_powershell.yml`](roles/workstation_core/tasks/install_powershell.yml)\n* Install var: `install_powershell: true`\n\n---\n\n### Workstation Desktop\n\n* Role file: [`roles/workstation_desktop/tasks/main.yml`](roles/workstation_desktop/tasks/main.yml)\n\n#### Alacritty\n\n* Task file: [`install_alacritty.yml`](roles/workstation_desktop/tasks/install_alacritty.yml)\n* Install var: `install_alacritty: true`\n\n#### Flameshot\n\n* Task file: [`install_flameshot.yml`](roles/workstation_desktop/tasks/install_flameshot.yml)\n* Install var: `install_flameshot: true`\n\n#### Regolith\n\n* Task file: [`install_regolith.yml`](roles/workstation_desktop/tasks/install_regolith.yml)\n* Install var: `install_regolith: true`\n\n#### Chrome\n\n* Task file: [`install_chrome.yml`](roles/workstation_desktop/tasks/install_chrome.yml)\n* Install var: `install_chrome: true`\n\n#### Microsoft Edge \n\n* Task file: [`install_microsoft_edge.yml`](roles/workstation_desktop/tasks/install_microsoft_edge.yml)\n* Install var: `install_microsoft_edge: true`\n\n#### VSCode\n\n* Task file: [`install_vscode.yml`](roles/workstation_desktop/tasks/install_vscode.yml)\n* Install var: `install_vscode: true`\n\n#### Ulauncher\n\n* Task file: [`install_ulauncher.yml`](roles/workstation_desktop/tasks/install_ulauncher.yml)\n* Install var: `install_ulauncher: true`\n\n#### Remmina\n\n* Task file: [`install_remmina.yml`](roles/workstation_desktop/tasks/install_remmina.yml)\n* Install var: `install_remmina: true`\n\n#### KeePassXC\n\n* Task file: [`install_keepassxc.yml`](roles/workstation_desktop/tasks/install_keepassxc.yml)\n* Install var: `install_keepassxc: true`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanreece%2Fansible-linux-day0","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryanreece%2Fansible-linux-day0","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryanreece%2Fansible-linux-day0/lists"}