)]}'
{"doc/source/sysadmin.rst":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":261,"context_line":"* run ``/opt/borg/bin/borg list ./backup`` to list the archives available"},{"line_number":262,"context_line":"* these should look like ``hostname-YYYY-MM-DDTHH:MM:SS``"},{"line_number":263,"context_line":"* move to working directory"},{"line_number":264,"context_line":"* extract one of the appropriate archives with ``/opt/borg/bin/borg extract ~/backup \u003carchive-tag\u003e``"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Rotating backup storage"},{"line_number":267,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_8f48e25c","line":264,"updated":"2020-07-20 23:11:30.000000000","message":"Will this extract the entire 30GB backup for $host? Would it be better to maybe describe the fuse option which can be used to interact with individual files easily?","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"dd9ba37b8b57ca1c046cd6206857426514887bb8","unresolved":false,"context_lines":[{"line_number":261,"context_line":"* run ``/opt/borg/bin/borg list ./backup`` to list the archives available"},{"line_number":262,"context_line":"* these should look like ``hostname-YYYY-MM-DDTHH:MM:SS``"},{"line_number":263,"context_line":"* move to working directory"},{"line_number":264,"context_line":"* extract one of the appropriate archives with ``/opt/borg/bin/borg extract ~/backup \u003carchive-tag\u003e``"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"Rotating backup storage"},{"line_number":267,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_85572127","line":264,"in_reply_to":"bf51134e_8f48e25c","updated":"2020-07-21 05:16:55.000000000","message":"i feel like this is all a bit of WIP as we get a bit more experience with it; i\u0027d like to tackle things like partial retrieval and even things like the rotation maybe in a separate change after we get a little more history with it","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"41132700f9adbd77be9977ac30dc43cac6395d7a","unresolved":false,"context_lines":[{"line_number":253,"context_line":"-------------------"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"``borg`` has many options for restoring but a basic way to dump a host"},{"line_number":256,"context_line":"at a particular time is to"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"* log into the backup server"},{"line_number":259,"context_line":"* sudo ``su -`` to switch to the backup user for the host to be restored"}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_779f035f","line":256,"updated":"2020-07-29 21:02:38.000000000","message":"This isn\u0027t a deal-breaker, but is it possible to restore onto the host rather than the backup server?","commit_id":"028d6553750eaafc24ef7c244fbd4832d68a11a2"}],"playbooks/roles/borg-backup-server/README.rst":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":3,"context_line":"This role configures backup server(s) in the ``backup-server`` group"},{"line_number":4,"context_line":"to accept backups from remote hosts."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Note that the ``backup`` role must have run on each host in the"},{"line_number":7,"context_line":"``backup`` group before this role.  That role will create a"},{"line_number":8,"context_line":"``bup_user`` tuple in the hostvars for for each host consisting of the"},{"line_number":9,"context_line":"required username and public key."}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_8f6102d7","line":6,"range":{"start_line":6,"start_character":16,"end_line":6,"end_character":22},"updated":"2020-07-20 23:11:30.000000000","message":"I think it is the borg-backup role.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":3,"context_line":"This role configures backup server(s) in the ``backup-server`` group"},{"line_number":4,"context_line":"to accept backups from remote hosts."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Note that the ``backup`` role must have run on each host in the"},{"line_number":7,"context_line":"``backup`` group before this role.  That role will create a"},{"line_number":8,"context_line":"``bup_user`` tuple in the hostvars for for each host consisting of the"},{"line_number":9,"context_line":"required username and public key."}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_403977d6","line":6,"range":{"start_line":6,"start_character":16,"end_line":6,"end_character":22},"in_reply_to":"bf51134e_8f6102d7","updated":"2020-07-21 07:36:30.000000000","message":"Done","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"to accept backups from remote hosts."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Note that the ``backup`` role must have run on each host in the"},{"line_number":7,"context_line":"``backup`` group before this role.  That role will create a"},{"line_number":8,"context_line":"``bup_user`` tuple in the hostvars for for each host consisting of the"},{"line_number":9,"context_line":"required username and public key."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_af9de6bc","line":7,"range":{"start_line":7,"start_character":2,"end_line":7,"end_character":8},"updated":"2020-07-20 23:11:30.000000000","message":"Seems to be a borg-backup group too.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":4,"context_line":"to accept backups from remote hosts."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"Note that the ``backup`` role must have run on each host in the"},{"line_number":7,"context_line":"``backup`` group before this role.  That role will create a"},{"line_number":8,"context_line":"``bup_user`` tuple in the hostvars for for each host consisting of the"},{"line_number":9,"context_line":"required username and public key."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"bf51134e_203603e9","line":7,"range":{"start_line":7,"start_character":2,"end_line":7,"end_character":8},"in_reply_to":"bf51134e_af9de6bc","updated":"2020-07-21 07:36:30.000000000","message":"Done","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"}],"playbooks/roles/borg-backup/README.rst":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"41132700f9adbd77be9977ac30dc43cac6395d7a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Configure a host to be backed up"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"This role setups a host to use ``borgp`` for backup to any hosts in the"},{"line_number":4,"context_line":"``borg-backup-server`` group."},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"A separate ssh key will be generated for root to connect to the backup"}],"source_content_type":"text/x-rst","patch_set":19,"id":"9f560f44_579abf6d","line":3,"updated":"2020-07-29 21:02:38.000000000","message":"Typo? borgp\n\nI mention it because I really did take about 30 seconds to see if there was any reason for it to be called borgp.","commit_id":"028d6553750eaafc24ef7c244fbd4832d68a11a2"}],"playbooks/roles/borg-backup/files/bup-excludes":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/proc/*"},{"line_number":2,"context_line":"/sys/*"},{"line_number":3,"context_line":"/dev/*"},{"line_number":4,"context_line":"/tmp/*"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"bf51134e_6f5e2e13","line":1,"updated":"2020-07-20 23:11:30.000000000","message":"This file might need a better name now that it isn\u0027t bup. Also we seem to set the excludes and includes via group and host vars. Is this file even used?","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":1,"context_line":"/proc/*"},{"line_number":2,"context_line":"/sys/*"},{"line_number":3,"context_line":"/dev/*"},{"line_number":4,"context_line":"/tmp/*"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"bf51134e_c073c7b3","line":1,"in_reply_to":"bf51134e_6f5e2e13","updated":"2020-07-21 07:36:30.000000000","message":"yeah, this has moved into borg_backup_excludes variable; each host can define borg_backup_excludes_extra (and similar for includes) to modify for their specific needs.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"}],"playbooks/roles/borg-backup/templates/borg-backup.j2":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":14,"context_line":"export BORG_REPO\u003d\"ssh://{{ borg_username}}@${1}/opt/backups/{{ borg_username }}/backup\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# some helpers and error handling:"},{"line_number":17,"context_line":"info() { printf \"\\n%s %s\\n\\n\" \"$( date )\" \"$*\" \u003e\u00262; }"},{"line_number":18,"context_line":"trap \u0027echo $( date ) Backup interrupted \u003e\u00262; exit 2\u0027 INT TERM"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"info \"Starting backup\""}],"source_content_type":"text/x-jinja2","patch_set":18,"id":"bf51134e_afeb2610","line":17,"updated":"2020-07-20 23:11:30.000000000","message":"Nit, info is the man page replacement tool. Maybe call this logmsg or something less ambiguous?","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":14,"context_line":"export BORG_REPO\u003d\"ssh://{{ borg_username}}@${1}/opt/backups/{{ borg_username }}/backup\""},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# some helpers and error handling:"},{"line_number":17,"context_line":"info() { printf \"\\n%s %s\\n\\n\" \"$( date )\" \"$*\" \u003e\u00262; }"},{"line_number":18,"context_line":"trap \u0027echo $( date ) Backup interrupted \u003e\u00262; exit 2\u0027 INT TERM"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"info \"Starting backup\""}],"source_content_type":"text/x-jinja2","patch_set":18,"id":"bf51134e_a09df3bc","line":17,"in_reply_to":"bf51134e_afeb2610","updated":"2020-07-21 07:36:30.000000000","message":"this is directly from the linked quickstart guide, so maybe we leave it for consistency with that.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":20,"context_line":"info \"Starting backup\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# This avoids UI prompts when first accessing the remote repository"},{"line_number":23,"context_line":"export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK\u003d1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Backup the most important directories into an archive named after"},{"line_number":26,"context_line":"# the machine this script is currently running on:"}],"source_content_type":"text/x-jinja2","patch_set":18,"id":"bf51134e_0f7cd270","line":23,"updated":"2020-07-20 23:11:30.000000000","message":"One thing I do with my local borg setup is have an rc file with these flags set then I can source it and interact with borg more easily via the remote. Might be a good followon to split things like that?","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":20,"context_line":"info \"Starting backup\""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"# This avoids UI prompts when first accessing the remote repository"},{"line_number":23,"context_line":"export BORG_UNKNOWN_UNENCRYPTED_REPO_ACCESS_IS_OK\u003d1"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"# Backup the most important directories into an archive named after"},{"line_number":26,"context_line":"# the machine this script is currently running on:"}],"source_content_type":"text/x-jinja2","patch_set":18,"id":"bf51134e_e0a7eb0a","line":23,"in_reply_to":"bf51134e_0f7cd270","updated":"2020-07-21 07:36:30.000000000","message":"maybe if we have more things being set.  however since this is templated out, it feels easy to write things in here with jinja specific to each host, if need be.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"}],"playbooks/roles/install-borg/tasks/main.yaml":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":14,"context_line":"      - cython"},{"line_number":15,"context_line":"      - \u0027borgbackup\u003d\u003d{{ borg_version }}\u0027"},{"line_number":16,"context_line":"    virtualenv: /opt/borg"},{"line_number":17,"context_line":"    virtualenv_command: /usr/bin/python3 -m venv"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"bf51134e_eff51eef","line":17,"updated":"2020-07-20 23:11:30.000000000","message":"I\u0027m not opposed to installing this to a venv, but we may want to write down why that is here as I\u0027m sure people will want to change it at some point in the future.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":14,"context_line":"      - cython"},{"line_number":15,"context_line":"      - \u0027borgbackup\u003d\u003d{{ borg_version }}\u0027"},{"line_number":16,"context_line":"    virtualenv: /opt/borg"},{"line_number":17,"context_line":"    virtualenv_command: /usr/bin/python3 -m venv"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"bf51134e_40acd7ed","line":17,"in_reply_to":"bf51134e_eff51eef","updated":"2020-07-21 07:36:30.000000000","message":"Done","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"}],"testinfra/test_borg_backups.py":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_borg_installed(host):"},{"line_number":24,"context_line":"    f \u003d host.file(\u0027/opt/borg/bin/borg\u0027)"},{"line_number":25,"context_line":"    assert f.exists"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def test_borg_server_users(host):"},{"line_number":28,"context_line":"    hostname \u003d host.backend.get_hostname()"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf51134e_efcebeb2","line":25,"updated":"2020-07-20 23:11:30.000000000","message":"Maybe also check the borg-backup version in this test?","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def test_borg_installed(host):"},{"line_number":24,"context_line":"    f \u003d host.file(\u0027/opt/borg/bin/borg\u0027)"},{"line_number":25,"context_line":"    assert f.exists"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def test_borg_server_users(host):"},{"line_number":28,"context_line":"    hostname \u003d host.backend.get_hostname()"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf51134e_e65264de","line":25,"in_reply_to":"bf51134e_efcebeb2","updated":"2020-07-21 07:36:30.000000000","message":"Done","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"1d127958254b06eb4ec6ad8ba311647573868acf","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def test_borg_server_users(host):"},{"line_number":28,"context_line":"    hostname \u003d host.backend.get_hostname()"},{"line_number":29,"context_line":"    if hostname.startswith(\u0027borg-backup-test\u0027):"},{"line_number":30,"context_line":"        pytest.skip()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    for username in \u0027borg-borg-backup-test01\u0027, \u0027borg-borg-backup-test02\u0027:"},{"line_number":33,"context_line":"        homedir \u003d os.path.join(\u0027/opt/backups/\u0027, username)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf51134e_6fe10e2b","line":30,"updated":"2020-07-20 23:11:30.000000000","message":"We started to split things up into separate files so that we don\u0027t have to skip on the unwanted hosts. I personally find that easier to think about. Maybe consider that with this change?\n\nThen you can set testinfra hosts to the hosts that matter in each file and have no skips.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"6a82b0b01a2d955d594c8e60204f250f4342c061","unresolved":false,"context_lines":[{"line_number":27,"context_line":"def test_borg_server_users(host):"},{"line_number":28,"context_line":"    hostname \u003d host.backend.get_hostname()"},{"line_number":29,"context_line":"    if hostname.startswith(\u0027borg-backup-test\u0027):"},{"line_number":30,"context_line":"        pytest.skip()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    for username in \u0027borg-borg-backup-test01\u0027, \u0027borg-borg-backup-test02\u0027:"},{"line_number":33,"context_line":"        homedir \u003d os.path.join(\u0027/opt/backups/\u0027, username)"}],"source_content_type":"text/x-python","patch_set":18,"id":"bf51134e_066318b3","line":30,"in_reply_to":"bf51134e_6fe10e2b","updated":"2020-07-21 07:36:30.000000000","message":"good point, i might take as a follow-on because this keeps it very similar to the existing bup version.  once i clean that up can refactor.","commit_id":"7369801be4b9c4822463685d3771309e5386dfe4"}]}
