{"id":16709606,"url":"https://github.com/mrlesmithjr/ansible-ctdb","last_synced_at":"2026-03-18T21:41:01.642Z","repository":{"id":142637081,"uuid":"54528597","full_name":"mrlesmithjr/ansible-ctdb","owner":"mrlesmithjr","description":null,"archived":false,"fork":false,"pushed_at":"2016-04-20T20:01:50.000Z","size":29,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-21T17:48:11.005Z","etag":null,"topics":["ctdb"],"latest_commit_sha":null,"homepage":null,"language":null,"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/mrlesmithjr.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":"2016-03-23T03:39:03.000Z","updated_at":"2022-12-20T08:07:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"0543d9f5-a658-4ca2-9730-c7e7721f5523","html_url":"https://github.com/mrlesmithjr/ansible-ctdb","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlesmithjr%2Fansible-ctdb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlesmithjr%2Fansible-ctdb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlesmithjr%2Fansible-ctdb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrlesmithjr%2Fansible-ctdb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrlesmithjr","download_url":"https://codeload.github.com/mrlesmithjr/ansible-ctdb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243672370,"owners_count":20328762,"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":["ctdb"],"created_at":"2024-10-12T20:05:21.805Z","updated_at":"2026-01-02T14:06:51.266Z","avatar_url":"https://github.com/mrlesmithjr.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"Role Name\n=========\n\nAn Ansible role to install and configure CTDB (https://ctdb.samba.org/)\n\nCTDB is a cluster implementation of the TDB database used by Samba and other projects to store temporary data.\n\nRequirements\n------------\n\nInstall additional Ansible required roles...  \n````\nansible-galaxy install -r requirements.yml\n````\n\nRole Variables\n--------------\n\n````\n---\n# defaults file for ansible-ctdb\nconfig_ctdb: false\nctdb_backup_configs: true\nctdb_glusterfs_mount: '/mnt/ctdb'  #NEEDS TO BE A GLUSTERFS MOUNT....or LOCKING FAILS\nctdb_glusterfs_client_mount: '/data/shares'  #Defines root mount for creating shares\nctdb_install_samba: true  #define if samba is to be installed using this role or set to false if you use another ansible role to install samba\nctdb_install_winbind: true\nctdb_lock_directory: '{{ ctdb_glusterfs_mount }}/lock'\nctdb_lockfile: '{{ ctdb_lock_directory }}/lockfile'\nctdb_manages_nfs: false\nctdb_manages_samba: true\nctdb_manages_winbind: false  #enable if using Samba in AD or LDAP\nctdb_nodes_cluster_address_int: 'eth1'  #ensure the address associated with this interface is already configured (eth0|eth1|eth2|enp0s3|enp0s8|etc...)\nctdb_nodes_file: '/etc/ctdb/nodes'\nctdb_nodes_group: 'ctdb-servers'\nctdb_public_addresses:\n  - address: 192.168.202.100  #samba\n    bind_interface: '{{ ansible_eth1.device }}'\n    cidr: 24\n  - address: 192.168.202.101  #nfs\n    bind_interface: '{{ ansible_eth1.device }}'\n    cidr: 24\nctdb_public_addresses_file: '/etc/ctdb/public_addresses'\nctdb_public_network: 192.168.202.0/24\nctdb_samba_active_directory_info:\n  domain_join_user: 'ansible'\n  domain_join_password: 'domainpassword'\n  idmap_range: '10000-99999'\n  kdc:\n    - 'dc01.{{ pri_domain_name }}'\n    - 'dc02.{{ pri_domain_name }}'\n  netbios_name: 'SMBCLUSTER'\n  preferred_master: 'no'\n  realm: '{{ pri_domain_name }}'\n  winbind_enum_users: 'yes'  #if set to no then getent passwd will not output domain users\n  winbind_enum_groups: 'yes'  #if set to no then getent group will not output domain groups\n  winbind_cache_time: '900'\n  winbind_use_default_domain: 'yes'\n  workgroup: 'EXAMPLE'\nctdb_samba_config: '{{ ctdb_glusterfs_mount }}/etc/samba/smb.conf'  #defines shared smb.conf between nodes...stored on GlusterFS mounts\nctdb_samba_ctdbd_socket_file: '/var/lib/run/ctdb/ctdbd.socket'\nctdb_samba_global_options:\n  clustering: 'yes'  #defines if CTDB clustering is used...(yes|no)\n  dns_proxy: 'no'\n  deadtime: '0'  #defines idle disconnects..(default 0)...A deadtime of zero indicates that no auto-disconnection should be performed\n  idmap_range: '100000-299999'\n  max_log_size: '1000'\n  netbios_name: 'SMBCLUSTER'\n  restrict_anonymous: '2'\n  server_string: '%h server (Samba, Ubuntu)'  #MAY NEED TO SET THIS TO A VAR SO ALL NODES SHARE THE SAME NETBIOS NAME\n  strict_locking: 'no'  #set to no if sharing same shares via NFS/CIFS..otherwise set to yes\n  unix_password_sync: 'yes'\n  usershare_allow_guests: 'no'\n  wins_server: []\n  wins_support: false\n  workgroup: 'WORKGROUP'\nctdb_samba_restrict_access_to_public_addresses_only: false  #defines if samba should only allow connections via public address...DOES NOT WORK YET!!!\nctdb_samba_join_domain: false\nctdb_samba_master_node: 'node1'  #only used to join domain..\nctdb_samba_shares:  #only creating base shares directory...manage from Windows to define add's ACL's\n  - name: 'public'\n    acls:\n      - etype: 'group'\n        entity: ''\n        perms: 'rx'\n        recurse: false\n        default: true\n      - etype: 'group'\n        entity: 'Domain Admins'\n        perms: 'rwx'\n        recurse: false\n        default: false\n      - etype: 'group'\n        entity: 'Domain Admins'\n        perms: 'rwx'\n        recurse: false\n        default: true\n      - etype: 'group'\n        entity: 'Domain Users'\n        perms: 'rwx'\n        recurse: false\n        default: false\n      - etype: 'group'\n        entity: 'Domain Users'\n        perms: 'rwx'\n        recurse: false\n        default: true\n      - etype: 'user'\n        entity: 'Domain Admins'\n        perms: 'rwx'\n        recurse: false\n        default: false\n      - etype: 'user'\n        entity: 'Domain Admins'\n        perms: 'rwx'\n        recurse: false\n        default: true\n      - etype: 'user'\n        entity: 'Domain Users'\n        perms: 'rwx'\n        recurse: false\n        default: false\n      - etype: 'user'\n        entity: 'Domain Users'\n        perms: 'rwx'\n        recurse: false\n        default: true\n      - etype: 'user'\n        entity: 'root'\n        perms: 'rwx'\n        recurse: false\n        default: false\n      - etype: 'user'\n        entity: 'root'\n        perms: 'rwx'\n        recurse: false\n        default: true\n    browseable: 'yes'\n    comment: 'Public Share(Open)'\n    directory_perms: 'u=rwx,g=rwx,o='\n    group: 'Domain Admins'\n    owner: 'root'\n    path: '{{ ctdb_samba_shares_root_dir }}/public'\n    read_only: 'no'\n    recurse_directory_perms: false\nctdb_samba_shares_root_dir: '{{ ctdb_glusterfs_client_mount }}'  #defines root directory where shares will be created\nctdb_samba_shares_root_perms:\n  owner: 'root'\n  group: 'root'\n  directory_perms: 'u=rwx,g=rx,o=rx'\nctdb_ulimit: 10000\npri_domain_name: 'example.org'\n````\n\nDependencies\n------------\n\nInstall Ansible role requirements following the requirements section.  \n\nExample Playbook\n----------------\n\n````\n---\n- hosts: all\n  become: true\n  vars:\n  roles:\n    - role: ansible-change-hostname\n  tasks:\n\n- hosts: all\n  become: true\n  vars:\n  roles:\n    - role: ansible-etc-hosts\n    - role: ansible-config-interfaces\n#    - role: ansible-network-tweaks\n    - role: ansible-ntp\n\n#- hosts: iscsi-servers\n#  become: true\n#  any_errors_fatal: true\n#  vars:\n#  roles:\n#    - role: ansible-zfs\n#      tags:\n#        - glusterfs-resize-lvm\n#  tasks:\n\n- hosts: glusterfs-nodes\n  become: true\n  any_errors_fatal: true\n  vars:\n  roles:\n    - role: ansible-open-iscsi\n      tags:\n        - glusterfs-resize-lvm\n      when: inventory_hostname not in groups['glusterfs-arbiter-nodes']\n\n- hosts: glusterfs-nodes\n  become: true\n  any_errors_fatal: true\n  vars:\n    - manage_glusterfs: true  #defines if role should be ran after initial setup\n  roles:\n    - role: ansible-glusterfs\n      when: manage_glusterfs\n  tasks:\n\n- hosts: ctdb-servers\n  become: true\n  any_errors_fatal: true\n  serial: 1  #we do this to ensure that any changes to ctdb/samba and etc do affect any existing connections.\n  vars:\n  roles:\n    - role: ansible-ctdb\n  tasks:\n````\n\nLicense\n-------\n\nBSD\n\nAuthor Information\n------------------\n\nLarry Smith Jr.\n- @mrlesmithjr\n- http://everythingshouldbevirtual.com\n- mrlesmithjr [at] gmail.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrlesmithjr%2Fansible-ctdb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrlesmithjr%2Fansible-ctdb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrlesmithjr%2Fansible-ctdb/lists"}