We have one repository as our "ansible root" (e.g. /etc/ansible). This repository includes all our roles (as git submodules <https://git-scm.com/book/en/v2/Git-Tools-Submodules>) that are in separate repositories. This gives a lot of versioning power, but also nice separation.
# ll total 264K -rw-r--r-- 1 mtersmitten mtersmitten 270 aug 11 10:10 all-3x-kernel-removal.yml -rw-r--r-- 1 mtersmitten mtersmitten 1,1K aug 3 10:46 all-bootstrap.yml -rw-r--r-- 1 mtersmitten mtersmitten 79 jan 19 2017 all-debug.yml -rw-r--r-- 1 mtersmitten mtersmitten 710 mrt 4 2016 all-dns-spf.yml -rw-r--r-- 1 mtersmitten mtersmitten 249 mrt 4 2016 all-ssh-client-config.yml -rw-r--r-- 1 mtersmitten mtersmitten 245 mrt 4 2016 all-ssh-keys-scan.yml -rw-r--r-- 1 mtersmitten mtersmitten 15K jan 17 2017 ansible.cfg drwxrwxr-x 2 mtersmitten mtersmitten 4,0K sep 4 20:52 bin/ drwxrwxr-x 22 mtersmitten mtersmitten 4,0K aug 3 10:46 files/ drwxrwxr-x 48 mtersmitten mtersmitten 4,0K sep 4 20:52 group_vars/ drwxrwxr-x 28 mtersmitten mtersmitten 4,0K sep 4 20:52 host_vars/ -rwxr-xr-x 1 mtersmitten mtersmitten 4,5K mrt 27 22:32 inventory.py* -rw-r--r-- 1 mtersmitten mtersmitten 1003 jan 16 2017 Makefile -rw-r--r-- 1 mtersmitten mtersmitten 50 mrt 4 2016 pylintrc -rw-r--r-- 1 mtersmitten mtersmitten 117 aug 30 19:31 requirements.txt drwxrwxr-x 130 mtersmitten mtersmitten 4,0K apr 7 22:10 roles/ drwxr-xr-x 4 mtersmitten mtersmitten 4,0K mrt 4 2016 tasks/ drwxr-xr-x 8 mtersmitten mtersmitten 4,0K mrt 4 2016 templates/ -rw-r--r-- 1 mtersmitten mtersmitten 3,6K aug 3 10:46 tiers-production-app-deploy.yml -rw-r--r-- 1 mtersmitten mtersmitten 439 mrt 4 2016 tiers-production-app-dns-ptr.yml -rw-r--r-- 1 mtersmitten mtersmitten 1,4K aug 3 10:46 tiers-production-app-mysql-pt-table-diff.yml -rw-r--r-- 1 mtersmitten mtersmitten 249 dec 16 2016 tiers-production-app-mysql-reset-root-password.yml -rw-r--r-- 1 mtersmitten mtersmitten 963 mrt 4 2016 tiers-production-app-mysql-setup-replication.yml -rw-r--r-- 1 mtersmitten mtersmitten 163 mrt 4 2016 tiers-production-app-mysql-slave-start.yml -rw-r--r-- 1 mtersmitten mtersmitten 781 dec 16 2016 tiers-production-app-web-maintenance.yml -rw-r--r-- 1 mtersmitten mtersmitten 1,9K dec 16 2016 tiers-production-app-web-rolling-reboot.yml -rw-r--r-- 1 mtersmitten mtersmitten 1,7K dec 16 2016 tiers-production-app-web-rolling-update.yml -rw-r--r-- 1 mtersmitten mtersmitten 2,0K jan 14 2017 tiers-production-app.yml -rw-r--r-- 1 mtersmitten mtersmitten 422 mrt 4 2016 tiers-production-wordpress-deploy.yml -rw-r--r-- 1 mtersmitten mtersmitten 1,2K aug 3 10:46 tiers-production-wordpress.yml -rw-r--r-- 1 mtersmitten mtersmitten 429 aug 3 10:46 tiers-staging.yml # git submodule status cbeb1ea0e62793a2e4f721c65e18759ba5904a86 roles/adminer (v2.0.3) eee5903480843a0181af4717d30053d5ae789175 roles/ansible (v1.0.13) 4eec9d3ea5f80475ca7231964959f196c9f9f18e roles/apache-mod-php-53 (v1.1.10) bd52ffa59a9db6fe75733a2067886d0c238dcbcd roles/apache-mod-php-56 (v3.5.12) 160b66b760331b7049761c6f0aff29ae6324dc3a roles/apache-mod-php-ondrej (heads/master) 751d3e8d9de44f55b36b988b75a3b709112e16ee roles/apparmor (v1.0.9) 051ba5cd4f8dc5cd51acb9066fc177a57a9bbe36 roles/apt (v1.4.9) d48b84f8096bf2e6b40812c75074aca1d682b665 roles/apt-file (v1.0.8) 31ad38591dbb5406d5db617b437e1f9ac157fba0 roles/autossh-tunnel-client (v1.1.9) 92ac4c1a7792c833bbe7efec5e112c5c1211dc7c roles/autossh-tunnel-server (v1.1.7) fbe7cb720127868f63c0808f23e8c9448e910089 roles/bash (v2.2.8) 78493825b2a2581cbcc47762c4ac8d710c133304 roles/ca-certificates (v1.0.8) 400772f9bb82514638922c712ecdb0d282f7f1f6 roles/cacti-client (v1.0.7) ca38e61ee93ec801ab4a913e389a8c192a6cadf9 roles/cacti-rrd-backup (v1.0.8) f527d7d9659b5b90f78654e9259f8577e619c46d roles/cakephp-queue (v2.0.9) d7e3264f8eb2f687aa5b533b2e7e9a947adc2090 roles/chrome (v1.0.8) 6ae1b40285368e410e11b13031819bbd231d0c37 roles/common-schema (v1.0.10) 9dd95355e556dc842961dd637c2ff2cda602bd5e roles/composer (v2.0.8) 441c3052af5c5976a20b955a19ffa955a6b0564d roles/conntrack (v1.0.9) 16b662fc25e5c72cb9b1451621a39d2d60b735ca roles/cron-apt (v1.2.8) 6b642f48b2ce9a846cfe826ea9af0a1819606667 roles/deploy-cakephp (v1.1.10) 84b1ae230dc579ea774ad8c2940ee5f65afbcdc8 roles/deploy-wp-themes (v1.0.8) 71350675175baf0a9574d66d8175ca8e18bbe095 roles/dns (v1.0.12) 8194a79fcf96ddd87cd3d2ecdda327f63ec51aea roles/dnsmasq (v1.0.9) 48825ad5bb1f344a17a097487314cb46f8888117 roles/docker (v2.0.13) df00f3d62731b6289a3ade35a69ea2d370da17e2 roles/docker-compose (v1.9.1) 20be901352e20cd848be5a1dbeaf5c7c0ca296f2 roles/docker-machine (v1.5.5) 33088a734feb393afddc2c6f04da12a66777d746 roles/dropbox (v1.0.10) aa66344b2b7d46490e0302023c7d806cd6e2eeab roles/duplicity (v1.0.8) 06b7ef00f82e4d6bceb8e38d753a1708c5e57a00 roles/duply (v2.0.9) 1acf8f84d55d2d8a3b3f96fbdc24c65560a6fb50 roles/duply-backup (v1.2.9) abf0fbea52d5d4dcd04ac74e402d9af31e1abb9b roles/fail2ban (v3.1.2) f717ac8a07fd867d537fa7550e7abd95f1efea85 roles/fonts (v1.0.8) 9699ae078f0812d71df5f1e5b9fbf0ce27468482 roles/gnu-parallel (v1.0.6) f4d18c6a99f56dba8424d95b390fc762e3617276 roles/haproxy (v5.2.1) b0957fbde57857d421dceeec88fbb48b5c0a1040 roles/haproxyctl (v1.0.8) 66114dba8e1cca105015a1a65dd174707697859a roles/haveged (v1.0.8) ddb7ecabb3fbdf3801d82f9cd1309f8245b9f3ad roles/hipchat (v2.0.6) e2bae5cffbee5cfa5a57daae411e712451bf0911 roles/hostname (v1.1.6) 14a7bddfaca7221f21c0953d77be9f8807ede532 roles/hp-proliant-support-pack (v1.0.8) e12f27d87ba6ee3c4291f6a1b5a3a16a066b4d0e roles/htop (v2.0.11) 6c87e4e82a40bd503acb8257ddaaca4b9291d3c5 roles/innotop (v1.0.8) 84583465567d8db556d4886f701c16fe9a64e689 roles/insecure-platform-warning (v1.0.11) 99cc7d33b65542823f1f62aa791fcd37ecc1ded4 roles/insync (v1.0.9) a5a89b10ca9cdb1dbb47ce72b290ca9ffab22a2d roles/integrit (v1.0.8) 7d01f03e518e6b1ef2f4fcc4a360c4a50c779b82 roles/jenkins (v1.2.6) 5a7a85b3b0f730a7db42af9818b6ea72a825175e roles/keepalived (v2.3.6) ad95eba2e0cf4dfcef423ac82b01584faeaac232 roles/komodo-ide (v1.0.10) 1a2bd24a2c84df9010df7aea497796c873f97959 roles/latest-git (v1.0.7) 933e8a4f1d34311327020d7a338146656b36d86d roles/limits (v1.1.9) 983037021b4fdd3a8a3e7545fc4adfd336100ad3 roles/locales (v1.0.11) 186e849967e941d8c4ecb882b8ff0e97b452b83f roles/logcheck (v1.1.10) 8f832ec1e128ef648fa15d765af6bb6f9f8f3d36 roles/logrotated (v1.0.12) 49ebae7c44a6560dc051532699af435168bf11ae roles/mailcatcher (v1.0.9) 51748cb2167e7cc712176e7a71c29a68cc956a5d roles/mailhog (v2.0.3) a1d45998674726b3328978d5d5294e7bba3a9b17 roles/mainwp-crons (v1.0.8) a9c6e9c4b3e227cbf530b200b780221afa6668bf roles/megacli (v1.0.10) 3e35573b5e70a2d7631967adcbfddbc83ff5f13a roles/memcached (v1.1.11) fcbd3354d2c907e7ee75836c328eaac0db5af639 roles/memtier-benchmark (v1.0.12) b0bbc1c30d63433edd6f6bbba537499632cf1f05 roles/mimetex (v1.0.10) 325209c9578c0ff4f69c6db678126a9db0db1f52 roles/mydumper (v1.1.10) cb49bb5b7134869f129bd2df2847de396ad76a18 roles/mydumper-backup (v2.4.10) f5bc2f0e9f942913c24f81c06f2e7086c88dbc2c roles/nagios-client (v1.1.8) a71c08b1e89bca11246830924e8608cb5b2d37a0 roles/nagios-plugin-hipsaint (v1.0.9) af5c5686f14878019cc135d51905af0420e05b95 roles/nagios-plugin-percona (v1.0.8) f977a9210d217d081c996daca0c31b795d41178f roles/nagios-server (v1.2.2) 13696ef3a7c978ec83358cdbb1bc6b554643eea8 roles/nano (v2.0.9) fed91e658510918271d6046208ebf1d77f6f8f02 roles/netbeans-ide (v1.1.9) fd39ae02352125d146a26404dc2a63bd231fdada roles/netcat (v1.0.9) da4fbe700288d9cdc801e7feece54a7fd32abdd2 roles/network-interfaces (v1.1.8) ee9f95f1a8b5f716f1578184d5d7c7a4d286ef02 roles/new-relic-servers (v1.0.10) fda34f0bf1c9167fc8a540b19c74bd8b10208e19 roles/nginx (heads/initial-working-version) 76e3c2eba97ae0e3328cafb0fd910f680bb6b278 roles/nodejs (v4.0.6) aeaa1d39252ece2e8bf83407f411e5b492925063 roles/ntp (v1.0.9) aa6ca788efc7f1d626e342be1b60e2d8a5ef7262 roles/oracle-java (v1.1.9) 414419bf2b7da6e3fbe298df5c82a165d0580425 roles/packer-io (v2.0.8) 52bb8245fdfa796c2137fedb00ab85615becb3ef roles/packer-template (v1.1.2) dd2fd049e389671c3d9c89c52b3bdd0efaaf9688 roles/percona-client (v2.0.7) 8b4c4077e46584866b13bb855cdd3f9bdcc4e1d1 roles/percona-server (v3.0.8) 863a3bef576019c27b9935b4bbf34e1ed0b706e0 roles/percona-server-tools (v2.2.9) 2da53fff52515e80b54392e267ecc382da791af3 roles/percona-toolkit (v1.1.10) 4c63e31944223ac53dabfece08f2be3d203e09e0 roles/pflogsumm (v1.0.8) ee77aa3b76bf7cd64381ba365ef210d827fa6e7f roles/php-56-cli (v2.1.7) 088bc8872c96146930948aa001726727ce588795 roles/php-cli-ondrej (v2.1.12) cf261a430a98b5abfd7f7e94cc14c03308713e59 roles/phpmemcachedadmin (v1.0.10) 5c5a29fd6864435f675b7ac171cf0b0da0f2771e roles/phpredis (v1.1.12) 4715600f502e7d89eb5726d5299fe878fd91c5ae roles/phpstorm (v1.0.9) 169da15c64cc388204fc8d7574702906c47fdb0c roles/pip (v2.0.6) 84016ffa80b0fe39b1bea1c2c2956f0a00347de0 roles/postfix (v2.1.2) 4117710325a3306e92c36a5acdf216f458a2f69e roles/pycharm (v1.0.9) fcd129a0189f8433d62c4ed44daea4a5d59781f3 roles/r (v1.2.10) ca9b7872e0ed6caa72cb44e8f9d61fd41cfe5cd3 roles/rc-local (v1.0.7) 24168041e4629ca91306a54142d03c16775c2922 roles/redis (v2.0.12) fd665c992c66894ea45f135fc86cc8e0bc3c512a roles/rstudio (v2.0.13) 1bb71a0166e45a6c20ec6b31b02a929e625e63bb roles/rstudio-server (v2.0.12) 87ced2f07c26a93e7886f8f4e27cd33c6dc43704 roles/rsync-sync (v1.2.9) 99a389b5f7ab30644f378299df7601746d3c8ac8 roles/rsyslog (v3.1.7) 4d5b5cd41cd9c394aaf9c21abccbab5fd1b83430 roles/screen (v2.0.9) ac92dcdfaea134f65e26a04c3ea06f32486f4bfe roles/serve-branch (v1.0.12) e8e6f4e9ac0c91be3c7746169ae344e3e36fd07a roles/siege (v1.1.9) 66048e6725721be59b05a6d8b089442b8ed0f11d roles/slack (v1.5.8) 7e205dbcad8ea0b5ac722bb9b5cb25ca22735aa7 roles/snmpd (v1.1.11) 6737ce054bee2003db2b5ae9e5c1774c11fe3431 roles/socat (v1.0.9) 336c53dba6bb07a6c84894b84eaa38e753eba0c2 roles/ssh-client (v1.0.11) edb342f23f4fe8079735759cec94d08e0d4ce2a8 roles/ssh-keys (v2.0.10) 99b14add7d0b46bfcea73e8adb9a36dc464f3359 roles/ssh-server (v1.0.10) 2bab463d4fff0ad47f95e4a72fbc9fa8961c5341 roles/sudoers (v2.0.6) 9c00f34f877dc5bd2cac4b6d5948ca9c2b4a5c89 roles/supervisor (v1.9.6) 451558dc72759a57e954b7045979d3cdf3f3e765 roles/swapfile (v1.0.10) d8a9a5dcbfc098c51e1218d8e058647f34209920 roles/sysctl (v1.0.10) a576bffe5f9f6a1249a52e47c800c896a006e108 roles/sysfs (v1.0.8) a2ef189b8d1c17b8a9b04028654ad16028b1d7fd roles/timezone (v1.0.13) f79973d7426c2ceed19375ceef3db4d59c4ffab3 roles/top (v2.0.9) 86fad60ffd27b69bf214a19553ceed2b3e9cef5c roles/tsocks (v1.0.8) 66674cc5050a8995522f846d64e7de7349569f49 roles/twisted-connect-proxy (v1.1.8) a1e01028d2a92e00010065998c93341b526f9836 roles/ufw (v3.0.7) dbfd51e9f22bcc452c72afe27b11bd0a1337b3fd roles/updatedb (v1.0.8) e77d8d06cb85ea1a3f8ccb4e7ff295eb7d897088 roles/user (v1.1.7) f83ce85f73116c3661f8242f0691a6bfab5fa692 roles/vagrant (v1.1.12) 2e9b2f936203ac0d671cb58e4b1bb4c92d1e90ef roles/vim (v2.0.9) 85921c61682c3421c0d25ed4131501f700289eb6 roles/virtualbox (v1.0.12) 2590cddfa5a636ef6c9ba718acf79c20c7f2e753 roles/virtualenv (v1.0.11) 81e2b8110134ec2d1cf56e0dd949c5f082dc91a4 roles/wordpress (v4.5.10) b6a2420dd4024d439a13d2dbb9f274771c5c8bc4 roles/wordpress-dev-sync-client (v1.0.6) c569453a1c102aaf1b0d6e16f15979c434ca68df roles/wordpress-dev-sync-server (v1.0.6) 5cef00efb202380e6a3680f82f0a82af9985dc0c roles/xxhash (v1.0.11) 65b7736cf0b8678fd1f23909109ed54bd181f8c7 roles/yarn (v1.0.9) b8fd34bb01cd7e7d755575a72cf1067e6782148a roles/zend-opcache-dashboards (v1.0.8) # git submodule foreach git remote -v Entering 'roles/adminer' origin [email protected]:Oefenweb/ansible-adminer.git (fetch) origin [email protected]:Oefenweb/ansible-adminer.git (push) Entering 'roles/ansible' origin [email protected]:Oefenweb/ansible-ansible.git (fetch) origin [email protected]:Oefenweb/ansible-ansible.git (push) I hope this gives some insight On Monday, September 4, 2017 at 5:48:30 PM UTC+2, Ash Powell wrote: > > This may be a silly question, but I've searched around and can't find > anyone asking a similar thing. > > Is it possible for Ansible roles to be stored in a source control > repository (such as Git)? > > Scenario; > > We have an ansible server and currently, all of our roles are stored in > /etc/ansible/roles > If we want to make a change to a role we ssh onto the ansible server and > manually edit the file (such as tasks/main.yml) > > Is there a way that we can have these files stored in source control so > that I can edit the file from my local machine, push into a repo and then > ansible pulls the files before running the playbook/role? > I know we can store files in a repo and call these files DURING a job run, > but I want to store the roles themselves in there... > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/b03d2409-8324-43d1-a34f-ee8dfa63e4e6%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
