8.2.10.2. Configuration / fichiers utiles

Les fichiers de configuration sont gérés par les procédures d’installation ou de mise à niveau de l’environnement VITAM. Se référer au DIN.

Les fichiers de configuration sont définis sous /vitam/conf/ihm-recette.

8.2.10.2.1. Fichier access-external-client.conf

Ce fichier permet de définir l’URL d’accès au service access-external.

serverHost: {{ vitam.accessexternal.host }}
serverPort: {{ vitam.accessexternal.port_service }}
secure: true
sslConfiguration :
 keystore :
  - keyPath: {{ vitam_folder_conf }}/keystore_{{ vitam_struct.vitam_component }}.p12
    keyPassword: {{ keystores.client_external.ihm_recette }}
 truststore :
  - keyPath: {{ vitam_folder_conf }}/truststore_{{ vitam_struct.vitam_component }}.jks
    keyPassword: {{ truststores.client_external }}
hostnameVerification: false

8.2.10.2.2. Fichier driver-location.conf

driverLocation: {{ vitam_folder_lib }}

8.2.10.2.3. Fichier driver-mapping.conf

driverMappingPath: {{ vitam_folder_data }}/
delimiter: ;

8.2.10.2.4. Fichier functional-administration-client.conf

serverHost: {{ vitam.functional_administration.host }}
serverPort: {{ vitam.functional_administration.port_service }}

8.2.10.2.5. Fichier ihm-recette-client.conf

serverHost: {{ vitam_struct.host }}
serverPort: {{ vitam_struct.port_service }}

8.2.10.2.6. Fichier ihm-recette.conf

#jinja2: lstrip_blocks: True
serverHost: {{ ip_service }}
port: {{ vitam_struct.port_service }}

baseUrl: "/{{ vitam_struct.baseuri }}"
baseUri: "/{{ vitam_struct.baseuri }}"

jettyConfig: jetty-config.xml
authentication: true
enableXsrFilter: true
enableSession: true

secureMode:
{% for securemode in vitam_struct.secure_mode %}
- {{ securemode }}
{% endfor %}
sipDirectory: {{ vitam_folder_data }}/test-data
performanceReportDirectory: {{ vitam_folder_data }}/report/performance

testSystemSipDirectory: {{ vitam_folder_data }}/test-data/system
testSystemReportDirectory: {{ vitam_folder_data }}/report/system
ingestMaxThread: {{ ansible_processor_cores * ansible_processor_threads_per_core + 1 }}

#
workspaceUrl: {{vitam.workspace | client_url}}

# Configuration MongoDB
mongoDbNodes:
{% for server in groups['hosts_mongos_data'] %}
- dbHost: {{ hostvars[server]['ip_service'] }}
  dbPort: {{ mongodb.mongos_port }}
{% endfor %}
# Actually need this field for compatibility
dbName: admin
# @integ: parametrize it !
masterdataDbName: masterdata
logbookDbName: logbook
metadataDbName: metadata
dbAuthentication: {{ mongodb.mongo_authentication }}
dbUserName: {{ mongodb['mongo-data']['admin']['user'] }}
dbPassword: {{ mongodb['mongo-data']['admin']['password'] }}

# ElasticSearch
clusterName: {{ vitam_struct.cluster_name }}
elasticsearchNodes:
{% for server in groups['hosts_elasticsearch_data'] %}
- hostName: {{ hostvars[server]['ip_service'] }}
  httpPort: {{ elasticsearch.data.port_http }}
{% endfor %}

# ElasticSearch External Metadata Mapping
elasticsearchExternalMetadataMappings:
- collection: Unit
  mappingFile: {{ vitam.ihm_recette.elasticsearch_mapping_dir }}/unit-es-mapping.json
- collection: ObjectGroup
  mappingFile: {{ vitam.ihm_recette.elasticsearch_mapping_dir }}/og-es-mapping.json

# Functional Admin Configuration
functionalAdminAdmin:
   functionalAdminServerHost: {{ vitam.functional_administration.host }}
   functionalAdminServerPort: {{ vitam.functional_administration.port_admin }}
   adminBasicAuth:
      userName: {{ admin_basic_auth_user }}
      password: {{ admin_basic_auth_password }}

# ES index configuration
functionalAdminIndexationSettings:
  default_config:
    number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.masterdata.number_of_shards | default('1') }}
    number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.masterdata.number_of_replicas | default('2') }}

{% for collection in ["accesscontract", "accessionregisterdetail", "accessionregistersummary", "accessionregistersymbolic", "agencies", "archiveunitprofile", "context", "fileformat", "filerules", "griffin", "ingestcontract", "managementcontract", "ontology", "preservationscenario", "profile", "securityprofile"] %}
  {% if vitam_elasticsearch_tenant_indexation.masterdata[collection] is defined %}
  {{ collection }}:
    {% if vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_shards is defined %}
    number_of_shards: {{ vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_shards }}
    {% endif %}
    {% if vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_replicas is defined %}
    number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.masterdata[collection].number_of_replicas }}
    {% endif %}
  {% endif %}
{% endfor %}

metadataIndexationSettings:
  default_config:
    unit:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.unit.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.unit.number_of_replicas | default('2') }}
    objectgroup:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.objectgroup.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.objectgroup.number_of_replicas | default('2') }}

{% if vitam_elasticsearch_tenant_indexation.dedicated_tenants is defined and vitam_elasticsearch_tenant_indexation.dedicated_tenants is not none %}
  dedicated_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.dedicated_tenants %}
  - tenants: '{{ entry.tenants }}'
    {% if entry.unit is defined %}
    unit:
      {% if entry.unit.number_of_shards is defined %}
      number_of_shards: {{ entry.unit.number_of_shards }}
      {% endif %}
      {% if entry.unit.number_of_replicas is defined %}
      number_of_replicas: {{ entry.unit.number_of_replicas }}
      {% endif %}
    {% endif %}
    {% if entry.objectgroup is defined %}
    objectgroup:
      {% if entry.objectgroup.number_of_shards is defined %}
      number_of_shards: {{ entry.objectgroup.number_of_shards }}
      {% endif %}
      {% if entry.objectgroup.number_of_replicas is defined %}
      number_of_replicas: {{ entry.objectgroup.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

{% if vitam_elasticsearch_tenant_indexation.grouped_tenants is defined and vitam_elasticsearch_tenant_indexation.grouped_tenants is not none %}
  grouped_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.grouped_tenants %}
  - name: '{{ entry.name }}'
    tenants: '{{ entry.tenants }}'
    {% if entry.unit is defined %}
    unit:
      {% if entry.unit.number_of_shards is defined %}
      number_of_shards: {{ entry.unit.number_of_shards }}
      {% endif %}
      {% if entry.unit.number_of_replicas is defined %}
      number_of_replicas: {{ entry.unit.number_of_replicas }}
      {% endif %}
    {% endif %}
    {% if entry.objectgroup is defined %}
    objectgroup:
      {% if entry.objectgroup.number_of_shards is defined %}
      number_of_shards: {{ entry.objectgroup.number_of_shards }}
      {% endif %}
      {% if entry.objectgroup.number_of_replicas is defined %}
      number_of_replicas: {{ entry.objectgroup.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

logbookIndexationSettings:
  default_config:
    logbookoperation:
      number_of_shards: {{ vitam_elasticsearch_tenant_indexation.default_config.logbookoperation.number_of_shards | default('1') }}
      number_of_replicas: {{ vitam_elasticsearch_tenant_indexation.default_config.logbookoperation.number_of_replicas | default('2') }}

{% if vitam_elasticsearch_tenant_indexation.dedicated_tenants is defined and vitam_elasticsearch_tenant_indexation.dedicated_tenants is not none %}
  dedicated_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.dedicated_tenants %}
  - tenants: '{{ entry.tenants }}'
    {% if entry.logbookoperation is defined %}
    logbookoperation:
      {% if entry.logbookoperation.number_of_shards is defined %}
      number_of_shards: {{ entry.logbookoperation.number_of_shards }}
      {% endif %}
      {% if entry.logbookoperation.number_of_replicas is defined %}
      number_of_replicas: {{ entry.logbookoperation.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

{% if vitam_elasticsearch_tenant_indexation.grouped_tenants is defined and vitam_elasticsearch_tenant_indexation.grouped_tenants is not none %}
  grouped_tenants:
  {% for entry in vitam_elasticsearch_tenant_indexation.grouped_tenants %}
  - name: '{{ entry.name }}'
    tenants: '{{ entry.tenants }}'
    {% if entry.logbookoperation is defined %}
    logbookoperation:
      {% if entry.logbookoperation.number_of_shards is defined %}
      number_of_shards: {{ entry.logbookoperation.number_of_shards }}
      {% endif %}
      {% if entry.logbookoperation.number_of_replicas is defined %}
      number_of_replicas: {{ entry.logbookoperation.number_of_replicas }}
      {% endif %}
    {% endif %}
  {% endfor %}
{% endif %}

8.2.10.2.7. Fichier ingest-external-client.conf

serverHost: {{ vitam.ingestexternal.host }}
serverPort: {{ vitam.ingestexternal.port_service }}
secure: true
sslConfiguration :
 keystore :
  - keyPath: {{ vitam_folder_conf }}/keystore_{{ vitam_struct.vitam_component }}.p12
    keyPassword: {{ keystores.client_external.ihm_recette }}
 truststore :
  - keyPath: {{ vitam_folder_conf }}/truststore_{{ vitam_struct.vitam_component }}.jks
    keyPassword: {{ truststores.client_external }}
hostnameVerification: false

8.2.10.2.8. Fichier shiro.ini

[main]

{% if vitam_struct.secure_mode == 'x509' %}
x509 = fr.gouv.vitam.common.auth.web.filter.X509AuthenticationFilter

x509.useHeader = {{ vitam_defaults.vitam_ssl_user_header | default(false) }}

x509credentialsMatcher = fr.gouv.vitam.common.auth.core.authc.X509CredentialsSha256Matcher

x509Realm = fr.gouv.vitam.common.auth.core.realm.X509KeystoreFileRealm
x509Realm.grantedKeyStoreName = {{ vitam_folder_conf }}/grantedstore_ihm-recette.jks
x509Realm.grantedKeyStorePassphrase = {{ password_grantedstore }}
x509Realm.trustedKeyStoreName = {{ vitam_folder_conf }}/truststore_ihm-recette.jks
x509Realm.trustedKeyStorePassphrase = {{ password_truststore }}
x509Realm.credentialsMatcher = $x509credentialsMatcher
securityManager.realm = $x509Realm
securityManager.subjectDAO.sessionStorageEvaluator.sessionStorageEnabled = false
[urls]
/v1/api/** = x509

{% else %}
# Objects and their properties are defined here,
# Such as the securityManager, Realms and anything
# else needed to build the SecurityManager
# credentialsMatcher
sha256Matcher = org.apache.shiro.authc.credential.Sha256CredentialsMatcher
iniRealm.credentialsMatcher = $sha256Matcher
# Cache Manager
builtInCacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager
# Security Manager
securityManager.cacheManager = $builtInCacheManager
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager
securityManager.sessionManager = $sessionManager
securityManager.sessionMode=native
securityManager.sessionManager.globalSessionTimeout = {{ vitam_struct.session_timeout }}
securityManager.sessionManager.sessionIdUrlRewritingEnabled = false 
securityManager.sessionManager.sessionIdCookie.secure = {{ vitam_struct.secure_cookie }}
securityManager.rememberMeManager.cookie.secure = {{ vitam_struct.secure_cookie }}
securityManager.rememberMeManager.cookie.httpOnly = true
# Notice how we didn't define the class for the FormAuthenticationFilter ('authc') - it is instantiated and available already:
authc.loginUrl = /#!/login
[users]
# The 'users' section is for simple deployments
# when you only need a small number of statically-defined
# set of User accounts.
#username = password
{% for item in vitam_users %}
{% if item.role == "admin" %}
{{ item.login }}={{ item.password|hash('sha256') }}
{% endif %}
{% endfor %}
[roles]
# The 'roles' section is for simple deployments
# when you only need a small number of statically-defined
# roles.
[urls]
# make sure the end-user is authenticated.  If not, redirect to the 'authc.loginUrl' above,
# and after successful authentication, redirect them back to the original account page they
# were trying to view:
/v1/api/login = anon
/v1/api/logout = logout
/v1/api/securemode = anon
/** = authc

{% endif %}

8.2.10.2.9. Fichier static-offer.json

{% if vitam.storageofferdefault.https_enabled==true %}
    {% set protocol = 'https' %}
{% else %}
    {% set protocol = 'http' %}
{% endif %}
[
{% for item in all_used_offers %}
{
{% if item.id is defined %}
    "id" : "{{ item.id }}",
{% else %}
    "id" : "{{ item.name }}.service.{{ item.vitam_site_name |default(vitam_site_name) }}.{{ consul_domain }}",
{% endif %}
    "baseUrl" : "{{ protocol }}://{{ item.name }}.service.{{ item.vitam_site_name |default(vitam_site_name) }}.{{ consul_domain }}:{{ vitam.storageofferdefault.port_service }}",
    {% if item.asyncRead is defined %} "asyncRead": {{ item.asyncRead|lower }}, {% endif %}
    "parameters" : {
        {% if vitam.storageofferdefault.https_enabled==true %}
        "keyStore-keyPath": "{{ vitam_folder_conf }}/keystore_storage.p12",
        "keyStore-keyPassword": "{{ keystores.client_storage.storage }}",
        "trustStore-keyPath": "{{ vitam_folder_conf }}/truststore_storage.jks",
        "trustStore-keyPassword": "{{ truststores.client_storage }}"
        {% endif %}
    }
}
{% if not loop.last %},
{% endif %}
{% endfor %}
]

8.2.10.2.10. Fichier static-strategy.json

[
    {
        "id" : "default",
        "offers" : [
{% for item in vitam_strategy %}
{% if item.id is defined %}
            {
                "id" : "{{ item.id }}"{% if item.referent | default(false) | bool == true %}, "referent" : true{% endif %}{% if item.status is defined %}, "status" : "{{ item.status | upper }}" {% endif %}{% if item.rank is defined %}, "rank" : "{{ item.rank }}"{% endif %}
            }{% if not loop.last %},{% endif %}
{% else %}
            {
                "id" : "{{ item.name }}.service.{{ item.vitam_site_name | default(vitam_site_name) }}.{{ consul_domain }}"{% if item.referent | default(false) | bool == true %}, "referent" : true{% endif %}{% if item.status is defined %}, "status" : "{{ item.status | upper }}" {% endif %}{% if item.rank is defined %}, "rank" : "{{ item.rank }}"{% endif %}
            }{% if not loop.last %},{% endif %}
{% endif %}
{% endfor %}
        ]
    }
{% if other_strategies is defined %}
{% for strategy_name, strategy_offers in other_strategies.items() %}
    ,
    {
        "id" : "{{ strategy_name }}",
        "offers" : [
{% for strategy_offer in strategy_offers %}
              {
                "id" : "{{ strategy_offer.name }}.service.{{ strategy_offer.vitam_site_name | default(vitam_site_name) }}.{{ consul_domain }}"{% if strategy_offer.referent | default(false) | bool == true %}, "referent" : true{% endif %}{% if strategy_offer.status is defined %}, "status" : "{{ strategy_offer.status | upper }}" {% endif %}{% if strategy_offer.rank is defined %}, "rank" : "{{ strategy_offer.rank }}"{% endif %}
              }{% if not loop.last %},{% endif %}
{% endfor %}
        ]
    }
{% endfor %}
{% endif %}

]

8.2.10.2.11. Fichier storage-client.conf

serverHost: {{ vitam.storageengine.host }}
serverPort: {{ vitam.storageengine.port_service }}

8.2.10.2.12. Fichier storage.conf

urlWorkspace: {{ vitam.workspace | client_url }}
timeoutMsPerKB: 100
jettyConfig: jetty-config.xml
zippingDirecorty: {{ vitam_folder_data }}/storage_archives
loggingDirectory: {{ vitam_folder_log }}

8.2.10.2.13. Fichier storage-offer.conf

strategy_name=[{% for item in vitam_strategy %}"{{ item.name }}.service.{{ consul_domain }}"{% if not loop.last %},{% endif %}{% endfor %}]

8.2.10.2.14. Fichier tnr.conf

urlWorkspace: {{vitam.workspace | client_url}}
tenantsTest: [ "0" ]
vitamSecret: {{ plateforme_secret }}
tenants: [ "{{ vitam_tenant_ids | join('", "') }}" ]
adminTenant: {{ vitam_tenant_admin }}