2
2
3
3
## About
4
4
5
- The sambacc is an young project that aims to consolidate and coordinate
6
- configuration of [ Samba] ( http://samba.org ) , and related components, when
7
- running in a container. The configuration of one or many instances can be
8
- provided to the tool by way of a JSON file which then handles the low level
9
- details of actually configuring smbd and other elements in the container
5
+ The sambacc project aims to consolidate and coordinate configuration of
6
+ [ Samba] ( http://samba.org ) , and related components, when running in a
7
+ container. The configuration of one or many server instances can be
8
+ managed by the tool with the use of configuration files. These
9
+ configuration files act as a superset of the well-known smb.conf, to
10
+ configure Samba, as well as other low level details of the container
10
11
environment.
11
12
12
13
13
14
## Rationale
14
15
15
- Samba is a powerful and unique tool for implementing the SMB protocol and a
16
- software stack to support it on unix-like systems. However, it's potentially
17
- challenging to set up and manage many instances of Samba by-hand, especially
18
- when running under a container orchestration system.
16
+ Samba is a powerful and unique tool for implementing the SMB protocol and
17
+ a software stack to support it on unix-like systems. However, it's
18
+ potentially challenging to set up and manage many instances of Samba
19
+ by-hand, especially when running under a container orchestration system.
19
20
20
- The idea behind sambacc is mainly to automate all of the low level steps of
21
- setting up smbd , users, groups, and other supporting components. The tool is
22
- also designed to consume one "site-wide" configuration file that can be
23
- maintained across many container instances. sambacc is written in Python as
24
- samba provides Python bindings for some of the aspects of samba we need to
25
- control.
21
+ The idea behind sambacc is to automate much of the low level steps needed
22
+ to set up samba daemons , users, groups, and other supporting
23
+ components. The tool is also designed to consume configuration files that
24
+ can be used across many container instances. sambacc is written in Python
25
+ as samba provides Python bindings for some of the aspects of samba we need
26
+ to control.
26
27
27
28
The sambacc library and samba-container CLI command are used by the
28
29
[ samba-container project] ( https://github.com/samba-in-kubernetes/samba-container/ )
@@ -74,8 +75,8 @@ samba-dc-container --help
74
75
## Features
75
76
76
77
* Abstracts away some of the nitty-gritty details about what Samba expects
77
- in it's environment
78
- * Imports specific smb.conf settings from "site wide" JSON configuration.
78
+ in its environment
79
+ * Imports specific smb.conf settings from "site wide" configuration files .
79
80
* Imports users and groups
80
81
* Starts smbd with container friendly settings
81
82
* Starts winbindd with container friendly settings
@@ -91,10 +92,25 @@ A lot. Various things that are missing include:
91
92
* Better integration (as opposed to unit) testing
92
93
* Better use of APIs versus executing CLI commands
93
94
95
+ Contributions and feedback would be very much appreciated.
96
+
94
97
95
98
## Install
96
99
97
- Currently the only method of install is from source control.
100
+ The sambacc library, samba-container command, and samba-dc-container are
101
+ written assuming the software is being run within an OCI container environment.
102
+ While there's nothing stopping you from trying to install it on something else
103
+ the value of doing that will be rather limited.
104
+
105
+ The (samba-container
106
+ project)[ https://github.com/samba-in-kubernetes/samba-container ] includes
107
+ sambacc and samba packages. If you are looking to use sambacc and not
108
+ contribute to it, that's probably what you want.
109
+
110
+ Builds of sambacc are continuously produced within our (COPR repository)[ https://copr.fedorainfracloud.org/coprs/phlogistonjohn/sambacc/ ] .
111
+ These builds are then consumed by the container image builds.
112
+
113
+ Otherwise, the only method of install is from source control.
98
114
99
115
* Clone the repo: ` git clone https://github.com/samba-in-kubernetes/sambacc `
100
116
* ` cd sambacc `
@@ -110,20 +126,33 @@ wheels. Then you can distribute and install from the wheel if you need to.
110
126
To run the entire unit test suite locally install ` tox ` and run ` tox ` in
111
127
the repo root.
112
128
113
- Because of the library and tooling that interacts with samba has some system level dependencies, not all test can be run locally.
129
+ Because of the library and tooling that interacts with samba has some
130
+ system level dependencies, not all tests can be run locally in
131
+ isolated (virtualenv) environments.
114
132
115
- #### Containerized testing
116
133
117
- In addition to running the unit tests locally, I've created a container image
118
- for testing and building sambacc. It lives at ./tests/container. This is
119
- canonical way to run the test suite and is what is used by the CI tests. When
120
- run this way certain system packages can be installed, etc. to support
121
- running a wider range of test cases.
134
+ #### Containerized testing
122
135
123
- To produce builds using the container, mount a directory into the container at
124
- "/srv/dist" and set the environment variable ` SAMBACC_DISTNAME ` to a term of
125
- your choice (example: "latest"). This will then save the builds in a dir of
126
- that name in your output dir. Example:
136
+ A more robust and isolated testing environment is provided in
137
+ the form of the sambacc container image.
138
+
139
+ The container file and other sources are available at ./tests/container in
140
+ the sambacc repo. This is the canonical way to run the test suite and is
141
+ what is used by the CI tests. When run this way certain system packages
142
+ can be installed, etc. to support running a wider range of test cases.
143
+
144
+ By default the container image is configured to check out sambacc master
145
+ branch and execute the tests and build python source distributions,
146
+ wheels, and RPM packages. You can test your local git checkout using the
147
+ image by mounting it at /var/tmp/build/sambacc (example: `podman run -v
148
+ $PWD:/var/tmp/build/sambacc sambacc: ci `).
149
+
150
+ To access the packages that are built using the container, mount a
151
+ directory into the container at "/srv/dist" and set the environment
152
+ variable ` SAMBACC_DISTNAME ` to a term of your choice (example: "latest").
153
+ This will then save the builds in a directory of that name in your output
154
+ directory.
155
+ Example:
127
156
```
128
157
$ mkdir -p $HOME/tmp/sambacc
129
158
$ podman run --rm \
@@ -136,6 +165,10 @@ sambacc-0.1.dev225+g10059ff-py3-none-any.whl sha512sums
136
165
sambacc-0.1.dev225+g10059ff.tar.gz
137
166
```
138
167
168
+ You can combine the source directory mount and distribution directory
169
+ mount in one command to produce builds for your own local development work
170
+ if needed.
171
+
139
172
## License
140
173
141
174
GPLv3 as per the COPYING file.
0 commit comments