1. See [Initial OmniAuth Configuration](../../integration/omniauth.md#initial-omniauth-configuration) for initial settings to enable single sign-on and add Authentiq as an OAuth provider.
1. See [Initial OmniAuth Configuration](../../integration/omniauth.md#initial-omniauth-configuration) for initial settings to enable single sign-on and add Authentiq as an OAuth provider.
1. Add the provider configuration for Authentiq:
1. Add the provider configuration for Authentiq:
For Omnibus packages:
For Omnibus packages:
```ruby
```ruby
gitlab_rails['omniauth_providers'] = [
gitlab_rails['omniauth_providers']=[
{
{
"name" => "authentiq",
"name"=>"authentiq",
"app_id" => "YOUR_CLIENT_ID",
"app_id"=>"YOUR_CLIENT_ID",
"app_secret" => "YOUR_CLIENT_SECRET",
"app_secret"=>"YOUR_CLIENT_SECRET",
"args" => {
"args"=>{
"scope": 'aq:name email~rs address aq:push'
"scope":'aq:name email~rs address aq:push'
}
}
}
}
]
]
```
```
For installations from source:
For installations from source:
```yaml
```yaml
- { name: 'authentiq',
-{name:'authentiq',
app_id: 'YOUR_CLIENT_ID',
app_id:'YOUR_CLIENT_ID',
app_secret: 'YOUR_CLIENT_SECRET',
app_secret:'YOUR_CLIENT_SECRET',
args: {
args:{
scope: 'aq:name email~rs address aq:push'
scope:'aq:nameemail~rsaddressaq:push'
}
}
}
}
```
```
1. The `scope` is set to request the user's name, email (required and signed), and permission to send push notifications to sign in on subsequent visits.
1. The `scope` is set to request the user's name, email (required and signed), and permission to send push notifications to sign in on subsequent visits.
See [OmniAuth Authentiq strategy](https://github.com/AuthentiqID/omniauth-authentiq/wiki/Scopes,-callback-url-configuration-and-responses) for more information on scopes and modifiers.
See [OmniAuth Authentiq strategy](https://github.com/AuthentiqID/omniauth-authentiq/wiki/Scopes,-callback-url-configuration-and-responses) for more information on scopes and modifiers.
1. On your GitLab server, open the configuration file.
1. On your GitLab server, open the configuration file.
**Omnibus:**
**Omnibus:**
```sh
```sh
sudo editor /etc/gitlab/gitlab.rb
sudo editor /etc/gitlab/gitlab.rb
```
```
**Source:**
**Source:**
```sh
```sh
cd /home/git/gitlab
cd /home/git/gitlab
sudo -u git -H editor config/gitlab.yml
sudo-u git -H editor config/gitlab.yml
```
```
1. See [Initial OmniAuth Configuration](../../integration/omniauth.md#initial-omniauth-configuration)
1. See [Initial OmniAuth Configuration](../../integration/omniauth.md#initial-omniauth-configuration)
for initial settings.
for initial settings.
1. Add the provider configuration:
1. Add the provider configuration:
**Omnibus:**
**Omnibus:**
```ruby
```ruby
gitlab_rails['omniauth_providers'] = [
gitlab_rails['omniauth_providers']=[
{
{
"name" => "crowd",
"name"=>"crowd",
"args" => {
"args"=>{
"crowd_server_url" => "CROWD_SERVER_URL",
"crowd_server_url"=>"CROWD_SERVER_URL",
"application_name" => "YOUR_APP_NAME",
"application_name"=>"YOUR_APP_NAME",
"application_password" => "YOUR_APP_PASSWORD"
"application_password"=>"YOUR_APP_PASSWORD"
}
}
}
}
]
]
```
```
**Source:**
**Source:**
```
```
- { name: 'crowd',
- { name: 'crowd',
args: {
args: {
crowd_server_url: 'CROWD_SERVER_URL',
crowd_server_url: 'CROWD_SERVER_URL',
application_name: 'YOUR_APP_NAME',
application_name: 'YOUR_APP_NAME',
application_password: 'YOUR_APP_PASSWORD' } }
application_password: 'YOUR_APP_PASSWORD' } }
```
```
1. Change `CROWD_SERVER_URL` to the URL of your Crowd server.
1. Change `CROWD_SERVER_URL` to the URL of your Crowd server.
1. Change `YOUR_APP_NAME` to the application name from Crowd applications page.
1. Change `YOUR_APP_NAME` to the application name from Crowd applications page.
1. Change `YOUR_APP_PASSWORD` to the application password you've set.
1. Change `YOUR_APP_PASSWORD` to the application password you've set.
...
@@ -77,4 +78,4 @@ could not authorize you from Crowd because invalid credentials
...
@@ -77,4 +78,4 @@ could not authorize you from Crowd because invalid credentials
Please make sure the Crowd users who need to login to GitLab are authorized to [the application](#configure-a-new-crowd-application) in the step of **Authorisation**. This could be verified by try "Authentication test" for Crowd as of 2.11.
Please make sure the Crowd users who need to login to GitLab are authorized to [the application](#configure-a-new-crowd-application) in the step of **Authorisation**. This could be verified by try "Authentication test" for Crowd as of 2.11.
label: 'Okta' # optional label for SAML login button, defaults to "Saml"
label:'Okta'# optional label for SAML login button, defaults to "Saml"
}
}
```
```
1.[Reconfigure](../restart_gitlab.md#omnibus-gitlab-reconfigure) or [restart](../restart_gitlab.md#installations-from-source) GitLab for Omnibus and installations
1.[Reconfigure](../restart_gitlab.md#omnibus-gitlab-reconfigure) or [restart](../restart_gitlab.md#installations-from-source) GitLab for Omnibus and installations
from source respectively for the changes to take effect.
from source respectively for the changes to take effect.
1.[Reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes
1.[Reconfigure GitLab](../restart_gitlab.md#omnibus-gitlab-reconfigure) for the changes
to take effect.
to take effect.
...
@@ -77,6 +77,7 @@ check the [Troubleshooting section](#troubleshooting) before proceeding.
...
@@ -77,6 +77,7 @@ check the [Troubleshooting section](#troubleshooting) before proceeding.
### Checking cluster membership
### Checking cluster membership
To see which nodes are part of the cluster, run the following on any member in the cluster
To see which nodes are part of the cluster, run the following on any member in the cluster
```
```
# /opt/gitlab/embedded/bin/consul members
# /opt/gitlab/embedded/bin/consul members
Node Address Status Type Build Protocol DC
Node Address Status Type Build Protocol DC
...
@@ -112,18 +113,18 @@ You will see messages like the following in `gitlab-ctl tail consul` output if y
...
@@ -112,18 +113,18 @@ You will see messages like the following in `gitlab-ctl tail consul` output if y
2017-09-25_19:53:41.74356 2017/09/25 19:53:41 [ERR] agent: failed to sync remote state: No cluster leader
2017-09-25_19:53:41.74356 2017/09/25 19:53:41 [ERR] agent: failed to sync remote state: No cluster leader
```
```
To fix this:
To fix this:
1. Pick an address on each node that all of the other nodes can reach this node through.
1. Pick an address on each node that all of the other nodes can reach this node through.
1. Update your `/etc/gitlab/gitlab.rb`
1. Update your `/etc/gitlab/gitlab.rb`
```ruby
```ruby
consul['configuration'] = {
consul['configuration']={
...
...
bind_addr: 'IP ADDRESS'
bind_addr: 'IP ADDRESS'
}
}
```
```
1. Run `gitlab-ctl reconfigure`
1. Run `gitlab-ctl reconfigure`
If you still see the errors, you may have to [erase the consul database and reinitialize](#recreate-from-scratch) on the affected node.
If you still see the errors, you may have to [erase the consul database and reinitialize](#recreate-from-scratch) on the affected node.
...
@@ -144,12 +145,13 @@ To fix this:
...
@@ -144,12 +145,13 @@ To fix this:
1. Pick an address on the node that all of the other nodes can reach this node through.
1. Pick an address on the node that all of the other nodes can reach this node through.
1. Update your `/etc/gitlab/gitlab.rb`
1. Update your `/etc/gitlab/gitlab.rb`
```ruby
```ruby
consul['configuration'] = {
consul['configuration']={
...
...
bind_addr: 'IP ADDRESS'
bind_addr: 'IP ADDRESS'
}
}
```
```
1. Run `gitlab-ctl reconfigure`
1. Run `gitlab-ctl reconfigure`
### Outage recovery
### Outage recovery
...
@@ -157,6 +159,7 @@ To fix this:
...
@@ -157,6 +159,7 @@ To fix this:
If you lost enough server agents in the cluster to break quorum, then the cluster is considered failed, and it will not function without manual intervenetion.
If you lost enough server agents in the cluster to break quorum, then the cluster is considered failed, and it will not function without manual intervenetion.
#### Recreate from scratch
#### Recreate from scratch
By default, GitLab does not store anything in the consul cluster that cannot be recreated. To erase the consul database and reinitialize
By default, GitLab does not store anything in the consul cluster that cannot be recreated. To erase the consul database and reinitialize
```
```
...
@@ -168,4 +171,5 @@ By default, GitLab does not store anything in the consul cluster that cannot be
...
@@ -168,4 +171,5 @@ By default, GitLab does not store anything in the consul cluster that cannot be
After this, the cluster should start back up, and the server agents rejoin. Shortly after that, the client agents should rejoin as well.
After this, the cluster should start back up, and the server agents rejoin. Shortly after that, the client agents should rejoin as well.
#### Recover a failed cluster
#### Recover a failed cluster
If you have taken advantage of consul to store other data, and want to restore the failed cluster, please follow the [Consul guide](https://www.consul.io/docs/guides/outage.html) to recover a failed cluster.
If you have taken advantage of consul to store other data, and want to restore the failed cluster, please follow the [Consul guide](https://www.consul.io/docs/guides/outage.html) to recover a failed cluster.
1. On each pgbouncer node, edit `/etc/gitlab/gitlab.rb`:
1. On each pgbouncer node, edit `/etc/gitlab/gitlab.rb`:
1. Ensure `gitlab_rails['db_password']` is set to the plaintext password for
1. Ensure `gitlab_rails['db_password']` is set to the plaintext password for
...
@@ -977,7 +977,7 @@ If you enable Monitoring, it must be enabled on **all** database servers.
...
@@ -977,7 +977,7 @@ If you enable Monitoring, it must be enabled on **all** database servers.
## Troubleshooting
## Troubleshooting
### Consul and PostgreSQL changes not taking effect.
### Consul and PostgreSQL changes not taking effect
Due to the potential impacts, `gitlab-ctl reconfigure` only reloads Consul and PostgreSQL, it will not restart the services. However, not all changes can be activated by reloading.
Due to the potential impacts, `gitlab-ctl reconfigure` only reloads Consul and PostgreSQL, it will not restart the services. However, not all changes can be activated by reloading.
- For non-NetApp devices, disable NFSv4 `idmapping` by performing opposite of [enable NFSv4 idmapper](https://wiki.archlinux.org/index.php/NFS#Enabling_NFSv4_idmapping)
- For non-NetApp devices, disable NFSv4 `idmapping` by performing opposite of [enable NFSv4 idmapper](https://wiki.archlinux.org/index.php/NFS#Enabling_NFSv4_idmapping)
### Improving NFS performance with GitLab
### Improving NFS performance with GitLab
...
@@ -87,10 +87,10 @@ on an Linux NFS server, do the following:
...
@@ -87,10 +87,10 @@ on an Linux NFS server, do the following:
1. On the NFS server, run:
1. On the NFS server, run:
```sh
```sh
echo 0 > /proc/sys/fs/leases-enable
echo 0 > /proc/sys/fs/leases-enable
sysctl -w fs.leases-enable=0
sysctl -w fs.leases-enable=0
```
```
1. Restart the NFS server process. For example, on CentOS run `service nfs restart`.
1. Restart the NFS server process. For example, on CentOS run `service nfs restart`.